Clojure does not allow programs to define new reader macros. The rationale for this has been explained (and debated) on the Clojure mailing list. https://www.google.com/accounts/ServiceLogin?service=groups2&passive=1209600&continue=http://groups.google.com/group/clojure/browse_thread/thread/f1148b3569e8d275/449ecde621e04b68?lnk%3Dgst%26q%3Dreader%2Bmacro%26pli%3D1&followup=http://groups.google.com/group/clojure/browse_thread/thread/f1148b3569e8d275/449ecde621e04b68?lnk%3Dgst%26q%3Dreader%2Bmacro%26pli%3D1
You can create a function with variable arity by including an ampersand in the parameter list. Clojure will bind the name after the ampersand to a sequence of all the remaining parameters.
Check out ClojureDoc:
http://itunes.apple.com/us/app/clojuredoc/id401479442?mt=8
http://jonathanwatmough.com/2008/02/google-charts-from-clojure/
When you define an object with def or defn, that object is stored in a Clojure var. The initial value of a var is called its root binding. Sometimes it is useful to have thread-local bindings for a var.
