Suppose I have the following macro, which generates a function that does some repetitive generation, let's say:
(defmacro a-macro [m] `(fn [f#] ~(for [i# m] `(* (:val f#) ~i# )))) Note how I start with a quoted block in which I emit the fn header, and in which I use a gensym to capture its input, F#. I unquote to do my iterative processing, then I quote again to emit my macro output. If I macroexpand this: (clojure.pprint/pprint (macroexpand '(a-macro (1 2 3)))) I get : (fn* ([f__11552__auto__] ((clojure.core/* (:val f__11551__auto__) 1) (clojure.core/* (:val f__11551__auto__) 2) (clojure.core/* (:val f__11551__auto__) 3)))) And I have a problem. The auto gensym for args declaration (...11522) is different from the gensyms applying this arg in my generated function body (...11551), so I cannot call my function. Any Idea why is that? And Can you please help me to sort this kind of situation? Thank you; Rafik -- 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.