Thanks guys, these solutions look much better already. But do I always have to have these 2 steps * merge collection * split collection
It feels a bit inefficient, I don't know if it actually is, though. On Mar 24, 8:05 pm, Phlex <ph...@telenet.be> wrote: > On 24/03/2009 1:06, pmf wrote: > > > On Mar 24, 12:01 am, Rowdy Rednose<rowdy.redn...@gmx.net> wrote: > > >> Hi group, > > >> say I have 2 sequences > > >> (def seq-a '("a1" "a2" "a3")) > >> (def seq-b '("b1" "b2" "b3")) > > >> and want to iterate over them in parallel, like this > > >> (par-doseq [a seq-a b seq-b] (prn a b)) > > >> which should print > > >> "a1" "b1" > >> "a2" "b2" > >> "a3" "b3" > > > A combination of the interleave and partition functions would probably > > do what you want: > > > (partition 2 (interleave [:a :b :c] [:d :e :f])) > > > (Wrap it in a doall to force your side effects.) > > Another one : > > (doseq [[a b] (map vector '(1 2 3) '(a b c))] > (println a b)) > > (defmacro par-doseq [bindings & body] > (let [bindings (partition 2 bindings)] > `(doseq [~(vec (map first ,bindings)) (map vector ~@(map second > ,bindings))] > ~...@body))) > > cara.nio.echo=> (par-doseq [a '(1 2 3) b '(a b c)] (println a b)) > 1 a > 2 b > 3 c > nil > > Sacha --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---