Chapter 8. Macros

If you give someone Fortran, he has Fortran. If you give someone Lisp, he has any language he pleases.

Guy Steele[1]

1 Afterword in The Seasoned Schemer by Daniel P. Friedman and Matthias Felleisen (MIT Press, 1995).

This chapter covers

  • Data is code is data
  • Defining control structures
  • Macros combining forms
  • Using macros to control symbolic resolution time
  • Using macros to manage resources
  • Macros returning functions

Macros are where the rubber of “code is data” meets the road of making programs simpler and cleaner. To fully understand macros, you need to understand the different times of Clojure: read time, macro-expansion time, compile time, and runtime. Macros perform the bulk of their work at compile time. We’ll ...

Get The Joy of Clojure, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.