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