A macro emits a form for the compiler to compile.  And it understands its 
inputs as forms -- unevaluated forms.

 - Your plus-two emits a list with + in function position.

 - foo, when it is computing the form to emit, applies + to 2 and some form 
x. So 5 works but u does not, even after (def u 10), because the macro 
receives u as a form and not the value u was bound to.  

 - bar, when it is computing the form to emit, does as you say; it throws 
away the '+ symbol and the 2, emitting the form given by x. 


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to