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 b
>> (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 se
> (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?
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 :
m
@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 wrote:
> Thanks guys, these solutions look much better already.
>
> But do I always have to have these 2 steps
> * merge collection
> * split collecti
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
>
> Thanks guys, these solutions look much better already.
>
> But do I always have to
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 wrote:
> On 24/03/2009 1:06, pmf wrote:
>
> > On Mar 24, 12:01 a
On 24/03/2009 1:06, pmf wrote:
> On Mar 24, 12:01 am, Rowdy Rednose 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))
On Mar 24, 12:01 am, Rowdy Rednose 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"