Okay thanks, I just wanted to make sure that I'm not re-inventing something already ready.
On Sunday, December 9, 2012 8:07:24 PM UTC+3, puzzler wrote: > > Essentially, you are using two accumulators: acc and (first coll). > > You can probably use reduce for this purpose by > (reduce f [acc (first coll)] (rest coll)) > adjusting the starting accumulator accordingly and altering f to be (fn > [[acc coll-acc] item] ...) > > Frankly, it would probably be more readable to just use loop. That's what > I do if I have more than one accumulator. > > On Sun, Dec 9, 2012 at 7:39 AM, Alexander Semenov > <boht...@gmail.com<javascript:> > > wrote: > >> Hi, folks. >> >> I'm wondering if Clojure library has 'reduce' function version which is >> like (reduce f coll) - i.e. it applies function to coll elements without >> the initial value but at the same time allows to use external accumulator >> which is passed to f as well. Better look at the code: >> >> (defn reduce-with-acc >> "Applies f to first two coll elements and acc producing new acc value >> for >> subsequent f calls. Returns acc. On singleton or empty collection >> returns >> acc immediately." >> [f acc coll] >> (loop [a (first coll) acc acc s (next coll)] >> (if (seq s) >> (let [b (first s)] >> (recur b (f a b acc) (next s))) >> acc))) >> >> Regards, >> Alexander. >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com<javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en > > > -- 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 Note that posts from new members are moderated - please be patient with your first post. 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