@Rowdy

Take the time to do the interleave example by hand.  You'll it does
exactly what you want in one pass.

On Mar 24, 10:10 am, Rowdy Rednose <rowdy.redn...@gmx.net> wrote:
> 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