You could define a helper function, zip (as in Haskell) :

(def zip (partial map list))

and then use as showed above:

(doseq [[x y] (zip [:a :b] [1 2])] (println "x: " x ", y:" y))



2009/3/24 Rowdy Rednose <rowdy.redn...@gmx.net>

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

Reply via email to