Debugging your first macro
Now, as you can imagine, since things can get complicated when using macros, there should be some way to debug them. We have two functions to accomplish that:
macroexpand
macroexpand-1
The difference between them has to do with recursive macros. There is no rule telling you that you can't use a macro from a macro (the whole language is there all the time, remember?). If you wish to go all the way through any macro, you can use macroexpand
; if you wish to go a single step forward, you can use macroexpand-1
.
Both of them show you the code generated by a macro call; this is what happens when you compile your Clojure code.
Give this a try:
(macroexpand-1 '(my-if (> a 200) (do (println"Bigger than 200") :bigger) (do (println"Smaller ...
Get Clojure: High Performance JVM Programming 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.