Nice! Ran into a blogpost yesterday of someone calculating 'e', and I was fiddling around after reading that with take-while looking for a way to do exactly this.
user> (time (/ (apply + (repeatedly 10000000 (fn [] (inc (count (take- while-acc + #(< % 1) (repeatedly #(rand)))))))) 10000000.0)) "Elapsed time: 36048.477374 msecs" 2.7183934 http://www.mostlymaths.net/2010/08/and-e-appears-from-nowhere.html On Aug 8, 6:19 am, Randy Hudson <randy_hud...@mac.com> wrote: > Nice! > > On Aug 7, 11:56 pm, Michał Marczyk <michal.marc...@gmail.com> wrote: > > > > > Yet another version: > > > (defn take-while-acc [f pred coll] > > (map (fn [_ x] x) > > (take-while pred (reductions f coll)) > > coll)) > > > Seems to work: > > > user> (take-while-acc + #(< % 100) (range)) > > (0 1 2 3 4 5 6 7 8 9 10 11 12 13) > > > Note that reductions does use an "accumulator" (in the form of a > > closed over local), so the above works as requested. Also, this > > version constructs no auxiliary data structures, not even two-element > > vectors. > > > Sincerely, > > Michał -- 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