Last night there was a discussion about over-riding functions in Clojure where Craig suggested modifying a var to accomplish this. The idea seemed new to a couple of people, so I thought I'd post an example.
I run my own repl where I attach source forms as metadata to the objects returned (I sometimes find it useful to ask a value how I created it when I'm in a long-running repl). The trick here was to capture the original repl function (clojure.main/repl) and to set the var to refer to my own function instead. My function then calls the original, but adds in an option to evaluate the extra metadata.
If you want to see it, then it's at:
Yeah, it's messy, and a hack, but it was fast to write and it works for me. :-) (I also learned a bit about the repl and setting metadata for different types of objects in Clojure)