O'Reilly logo

Clojure for Java Developers by Eduardo Díaz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required