Cool, thanks. On Mon, Feb 9, 2009 at 7:14 AM, Rich Hickey <richhic...@gmail.com> wrote:
> > > > On Feb 8, 5:13 pm, Jeffrey Straszheim <straszheimjeff...@gmail.com> > wrote: > > I have this piece of code: > > > > (defn- run-work-elements-in-parallel > > "Runs a group of work elements in parallel. Returns an extended > database." > > [elements database] > > (assert (set elements)) > > (let [[rec simp] (separate :recursive elements) > > results-simp (pmap #(run-simple-work-element % database) simp) > > results-rec (map #(run-recursive-work-element % database) rec) > > results (concat results-simp results-rec)] > > (preduce union (cons database results)))) > > > > The exact details aren't important. > > > > The let bindings results-simp, results-rec, and results are each a lazy > > stream. They can get quite large. Assuming preduce can iterate over > them, > > is binding them in the let statement stopping them from getting garbage > > collected? > > > > No. The compiler clears locals on tail calls. > > However, the parallel lib does everything with parallel arrays, so the > coll passed to it will be copied into an array. > > Rich > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---