On 24/03/2009 1:06, pmf wrote:
On Mar 24, 12:01 am, Rowdy Rednoserowdy.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
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
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
@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
On 24/03/2009 15:10, Rowdy Rednose 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.
Allright let's see what we can do :
make a
(defn par-doseq-fn [fn seqs]
(loop [rests seqs]
(when (every? identity (map seq rests))
(apply fn (map first rests))
(recur (map rest rests)
It should of course be like this :
(defn par-doseq-fn [fn seqs]
(loop [rests seqs]
(when (every? seq
(defn par-doseq-fn [fn seqs]
(loop [rests seqs]
(when (every? identity (map seq rests))
(apply fn (map first rests))
(recur (map rest rests)
It should of course be like this :
(defn par-doseq-fn [fn seqs]
(loop [rests seqs]
(when
Thanks all,
microbenchmarking shows that a simple
(time (doseq [[a b] (map vector list-a list-b)]))
is ~50% faster on my system than
(def par-doseq-fn (comp dorun map))
(defmacro par-doseq [bindings body]
(let [bindings (partition 2 bindings)]
`(par-doseq-fn (fn ~(vec (map first
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