Am Dienstag, 13. November 2012 12:09:39 UTC+1 schrieb Jim foo.bar:
>
> You can't convert to keyword simply by (str ":" (str (first 
> components))...you need the (keyword (first components))

in the meantime I learned this from Christophe 

> ...also why is 
> your argument (symbol "obj")? I'd prefer obj# or (gensym obj)... 
>
I looked for something like that, but didn't find Bitte um Rücksprache!

Johannes 


> On 13/11/12 10:06, Johannes wrote: 
> > 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 clo...@googlegroups.com<javascript:> 
> > Note that posts from new members are moderated - please be patient 
> > with your first post. 
> > To unsubscribe from this group, send email to 
> > clojure+u...@googlegroups.com <javascript:> 
> > 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 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