-
Book Overview & Buying
-
Table Of Contents
Clojure for Java Developers
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 than 200")
:smaller)))
;; (if (> a 200) (do (println"Bigger than 200") :bigger) (do (println"Smaller than 200") :smaller))There is not much more to macros than this; you now understand them to a good...
Change the font size
Change margin width
Change background colour