Hello everybody,
I am not sure if this is the expected behaviour .. or I am using it
incorrectly .. The code is pasted at
https://gist.github.com/716293 .
(ns symbol-macro-problem
(:require [clojure.contrib.macro-utils :as m]))
(defmacro sym-macro [& body]
`(m/symbol-macrolet [begin :begin
end :end]
(m/with-symbol-macros
(println begin)
~...@body
(println end))))
(defmacro display-local-bindings []
`(do ~@(map (fn [x#] (list 'println [`'~x# x#])) (keys &env))))
(sym-macro
(let [x 10]
(display-local-bindings)))
the above form is not passing the correct &env variable to the nested macros
.. It is turning out to be nil. The above code just prints
:begin
:end
while
(let [x 10]
(display-local-bindings))
prints
[x 10]
I was expecting the code
(sym-macro
(let [x 10]
(display-local-bindings)))
to print
:begin
[x 10]
:end
but this is not happening since the &env variable that is being passed to
(display-local-bindings) is nil when called inside a sym-macro
can somebody help me understand this.
Thanks,
Sunil.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en