Hi,
I define a record
(defrecord point [x y])
and the following macro:
(defmacro drg
[typename components]
`(def ~(symbol (str typename "-" (str (first components))))
(fn [~(symbol "obj")] (get ~(symbol "obj") ~(symbol (str ":" (str
(first components))))))))
the call
user> (macroexpand-1 '(drg point [x y]))
delivers what I expect:
(def point-x (clojure.core/fn [obj] (clojure.core/get obj :x)))
Evalutating this expression at the repl delivers what I expect:
user> (def point-x (clojure.core/fn [obj] (clojure.core/get obj :x)))
#'user/point-x
But calling the macro results in an error message:
user> (drg point [x y])
CompilerException java.lang.RuntimeException: Unable to resolve symbol: :x
in this context, compiling:(NO_SOURCE_PATH:1)
Can anyone tell me what my mistake is?
Johannes
--
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