In this chapter, we will get to know one of Clojure's most complicated facilities: macros. We will learn what they are for, how to write them, and how to use them. It can be a little challenging, but there is good news too. You should be aware of some tools from your knowledge of the Java language that can help you understand macros better. We will progress little by little with comparisons to other JVM languages, and in the end, we will write some macros and understand that we have been using them for a while.
We will learn about the following topics:
Understanding Lisp's foundational ideas
Macros as code modification tools
Modifying code in Groovy
Writing your first macro
Debugging your first macro
Macros in the real world