Clojure macros let you automate patterns in your code. Because they transform source code at macro expansion time, you can use macros to abstract away any kind of pattern in your code. You’re not limited to working within Clojure. With macros, you can extend Clojure into your problem domain.