I think this is a stupid question to ask, what can I add, what should you ask, this is what you cannot add. Macros allow you to connect to the compiler, which means you can do almost anything.
You cannot currently add your own syntax to the language. Clojure does not have a custom reader extender, which means that you do not have any reader macros ( http://dorophone.blogspot.com/2008/03/common-lisp-reader-macros-simple.html ). This is due not only to the technical problem, but also to the wide variety of Rich Hickey (creator of Clojure).
What you cannot do is implement functions that need support for virtual mache, for example, add tail tail semantics or goto .
If you want to see some things that were done: Is there a Clojure DSL?
Please note that this list does not correspond 100%.
Edit:
Since you seem to be using a match pattern (this is a really good example for macros), you really should look at the match library. His probe is Clojure's fastest pattern matching library. http://vimeo.com/27860102
source share