.Bill Smith a écrit :
> To take the extra Java class out of the loop, I wrote this second
> macro:
>
> user=> (defmacro s [& args] `(java.util.Arrays/asList (into-array (map
> str '~args))))
> #'user/s
> user=> (let [c "value of c"] (s "1" c))
> #<ArrayList [1, c]>
>
user=> (macroexpand-1 '(s "1" c))
(java.util.Arrays/asList (clojure.core/into-array (clojure.core/map
clojure.core/str (quote ("1" c)))))
while what you want is:
(java.util.Arrays/asList (clojure.core/into-array (clojure.core/map
clojure.core/str (list "1" c))))
You have to remove the quote, introduce 'list and use unquote-splicing (~@):
user=> (defmacro s [& args] `(java.util.Arrays/asList (into-array (map
str (list ~...@args)))))
#'user/s
user=> (let [c "value of c"] (s "1" c))
#<ArrayList [1, value of c]>
Christophe
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---