Hi guys, I have a list (which i don't know the size of) and i want to do something like this: (doto (MutatingJavaObject.) (.add (first list-items)) (.add (second list-items)) ..... (.add (last list-items)))
Now I may be doing this the complete wrong way, so if you have a better solution please tell me. but i've been trying to build a macro to expand this out, given the object, the function to call and the list of items. i've been playing with various things, and manage to get a few things that work if i pass the list of items in without being a list (i.e. (1 1 1) rather than '(1 1 1) or (list 1 1 1)) for example (defmacro d2 [obj func inputs] (concat (list 'doto obj) (map #(list func %) inputs))) but if i try and pass in my list-items variable it just complains that it "Don't know how to create ISeq from: clojure.lang.Symbol". perhaps i'm not fully grasping the concept of macros? i'm very new to lisp and FP in general. while writing this email i had a light switch on that i could simply do it like this: (let [obj (MutatingJavaObject.)] (loop [in list-items] (when (not (empty? in)) (.add obj (first in)) (recur (rest in)))) obj) but i would still like to know if there is a way i could get the macro i wanted going. please help! my googling and trauling through Stuart Halloway's book have come up naught. thanks in advance! -Tristan -- 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