I just realized that we don't need to use the with-symbol-macros when using
symbol-macrolet .. but the problem persists all the same..  I have modified
the gist to reflect this change..
Sunil.

On Fri, Nov 26, 2010 at 10:35 AM, Sunil S Nandihalli <
sunil.nandiha...@gmail.com> wrote:

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

Reply via email to