> 3. (defmacro z [] `(let [a# ~((fn [x#] (fn [] x#)) 0)])) > > All three calls fail, (x) and (y) and (z). > I see no plausible reason why it *should* be that way.
As it's been pointed out, the compiler won't re-compile compiled code. Those macros work if you don't unquote the expressions: (defmacro x [] `(let [a# (atom 0)] a#)) (defmacro y [] `(let [a# (comp inc inc)] a#)) (defmacro z [] `(let [a# ((fn [x#] (fn [] x#)) 0)] a#)) user=> @(x) 0 user=> ((y) 1) 3 user=> ((z)) 0 -- 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