Hi,
I'm new to lisp and clojure, so what follows may be a very easy (i.e.
stupid) question...
I want a macro to generate multi-methods. Here is the macro I crafted:
(defmacro mcf [type class set-expr & forms]
'(defmethod make ~type [fd controller]
(let [control (new ~class)]
(doto control
~@(map (fn [f] f) forms)
(~set-expr (. controller link control (:uid fd)))))))
For instance, I want this:
(mcf :String JTextField .setText (.setColumns 15) (.setEditable
false))
To generate this:
(defmethod make :String [fd controller]
(let [control (new JTextField)]
(doto control
(.setColumns 15)
(.setEditable false)
(.setText (. controller link control (:uid fd))))))
For some reason, controller, link, control and fd don't seem to be
handled properly. No matter what escaping I try (quotes, semi-quotes),
I always get some error similar to "No such var: clojure.core/link".
Clojure seems to think "link" is a variable in the namespace while it
is in fact a (java) method on the controller. I just want to output
the last part verbatim (. controller link control...), I want no ahead-
of-time dereferencing...
What am I missing? Is it even possible?
Thanks,
Max
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---