Chapter 1. Introducing Clojure
Chapter 4. Multimethod polymorphism
Chapter 5. Exploring Clojure and Java interop
Chapter 6. State and the concurrent world
Figure 6.2. A reference that points to completely different immutable values over time
Chapter 7. Evolving Clojure through macros
Figure 7.1. Phases of the Clojure runtime. This separation is what makes the macro system possible.
Chapter 8. More on functional programming
Chapter 9. Protocols, records, and types
Chapter 11. More macros and DSLs