I think I misunderstood you. Battling a cold so I'm sorry if I'm way
off here but did you want a macro like this?

(defmacro my-doall [obj func-sym items]
  (let [func-name (symbol (str "." (name func-sym)))
        item (gensym)]
    `(doseq [~item ~items]
       (~func-name ~obj ~item))))

(my-doall obj add ["item1" "item2" "item3"])

Allen

On Tue, Dec 15, 2009 at 1:04 PM, Allen Johnson <akjohnso...@gmail.com> wrote:
> I'm just learning lisp but wouldn't a macro be overkill?
>
> ; manually add each item
> (doseq [item items]
>  (.add obj item))
>
> ; or wrapped in a function
> (defn add-all [obj items]
>  (doseq [item items]
>    (.add obj item)))
>
> (add-all obj items)
>
> If your java object had an addAll method that accepted a collection,
> then you probably could do:
>
> (.addAll obj items)
>
> I'm wondering why you want it to be a macro?
>
> Allen
>
> On Tue, Dec 15, 2009 at 12:31 PM, tristan <tristan.k...@gmail.com> wrote:
>> 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
>

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