Thanks for responding, but I know all this.

1. I know how to pass string and symbols into functions and I know how
to coerce.
2. I don't want to bind the name, I want to interpret the name as a
symbol, thus -> (defmacro baz [x y] `(def x y)), is not useful.
3. CL has anonymous macros, so why do you think CL has them - because
they're not useful?


On Dec 17, 9:31 am, Ken Wesson <kwess...@gmail.com> wrote:
> On Fri, Dec 17, 2010 at 10:54 AM, Trevor <tcr1...@gmail.com> wrote:
> > n00b questions :)
>
> > 1. How do I create a function and/or a macro that accepts an unbound
> > name and interprets that name as a symbol?
>
> Function:
>
> (defn foo [x]
>   (println x))
>
> user=>(foo 'quux)
> quux
> nil
> user=>
>
> (defn bar [x]
>   (do-something-with (symbol x)))
>
> user=> (bar "quux")
> ; whatever
> user=>
>
> (defmacro baz [x y]
>   `(def x y))
>
> user=> (baz quux 42)
> #'user/quux
> user=> quux
> 42
>
> > this may seem silly or non-idiomatic, but really for specific
> > functions (and more likely macros) I don't want to have to protect the
> > name for it to be interpreted as a symbol. This is simply to
> > accommodate my personal, good or bad, behaviors.
>
> If you mean you don't want to have to quote it, well, macro arguments
> aren't evaluated during macro expansion so you can generally pass
> unquoted symbols to macros. In fact you do so whenever you use defn.
>
> With function arguments, you need to quote a symbol to pass a symbol,
> or else pass a string the function will convert by using (symbol x) on
> it.
>
> > 2. Is there a form for anonymous macros?
>
> Nope. I'm not sure why you'd want one, either.

-- 
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