I'm attempting what should be a simple transformation using a macro called dlg in the following code: (defn fld [parent lay id text field] '...)
;; dlg macro. For this input: ;; ;; (dlg "test" ;; (field fld-1 "Field number one" (JTextField.)) ;; (field fld-2 "Field number two" (JTextField.))) ;; ;; we want this output: ;; ;; (fn [parent layout] ;; (fld parent layout 'fld-1 "Field number one" (JTextField.)) ;; (fld parent layout 'fld-2 "Field number two" (JTextField.)) ;; parent) (defmacro dlg [dlgid# & fields#] `(fn [parent# layout#] ~@(map (fn [[f# id# text# type#]] `(fld parent# layout# '~id# ~text# ~type#)) fields#))) (def inp '(dlg "test" (field fld-1 "Field number one" (JTextField.)) (field fld-2 "Field number two" (JTextField.)))) (macroexpand inp) ;; => ;; (fn* ([parent__6 layout__7] ;; (user/fld parent__4 layout__5 (quote fld-1) "Field number one" (JTextField.)) ;; (user/fld parent__4 layout__5 (quote fld-2) "Field number two" (JTextField.)))) (eval inp) ;; => ;; java.lang.Exception: Unable to resolve symbol: parent__4 in this context (NO_SOURCE_FILE:24) I'm wondering why the macro produces 2 different "parent" symbols--I'd like both references to be the same parent. Any suggestions? --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---