They can be tricky to use, but Mastering Clojure Macros: Write Cleaner, Faster, Smarter Code (Pragmatic Bookshelf, US$17 paper, $11 ebook) can help you navigate the terrain.
Clojure offers some sharp tools in its toolbox, and one of the sharpest is its macro system. This book will help you write macros using Clojure, and more importantly, recognize when you should be using macros in the first place.
The Lisp “code-as-data” philosophy gives advantages to macro authors and users. You can use macros to evaluate code in other contexts, move computations to compile time, and create beautiful API layers. You don’t need to wait on the Clojure language itself to add new features, you’ll learn how to implement even the lowest-level features as macros. You’ll step through representative samples of how to use macros in production libraries and applications, find clear details on how to construct macros, and learn pointers to avoid obstacles that often trip up macro amateurs.
Clojure macros are more straightforward to use than metaprogramming features in many other languages, but they’re different enough from normal programming to present challenges of their own. Mastering Clojure Macros: Write Cleaner, Faster, Smarter Code examines some of these issues, along with alternatives to macros where they exist.
The author, Colin Jones, is a software craftsman at 8th Light, where he builds web, mobile, and desktop systems for clients large and small. He’s an active participant in the Clojure open source community, including work on the Clojure Koans, REPLy, Leiningen, and small contributions to Clojure itself.
For more information about the book, including: code, errata, discussions, full table of contents, excerpts from the book and more, go to http://tinyurl.com/p92lbcq .