Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
As with any other Lisp, macros are essential to Clojure’s expressive power. A little macrology goes a long way in eliminating eyesores and abstracting away common patterns in your code. However, they are by no means the most basic construct or the one you should reach for first: you can go a very long way with Clojure without creating a single macro.
Functional programming and data modeling already yield tremendous expressive power and allow us to abstract away most repeating patterns in our code. Macros are the final step, simplifying patterns of control flow and adding syntactic sugar to minimize or eliminate code awkwardness.