Correct, I forgot to paste that part. ;) On Wednesday, September 11, 2013 10:57:09 AM UTC-7, Sean Corfield wrote: > > Just to confirm, (t2 0 (range 1000000)) -- using doseq instead of > dorun -- does NOT run out of memory, correct? > > On Wed, Sep 11, 2013 at 8:59 AM, Brian Craft > <craft...@gmail.com<javascript:>> > wrote: > > This appears to have no effect on the problem. I tested with > > jdbc/transaction, and with Sean's simple example: > > > > user=> (defn f [g] (g)) > > #'user/f > > user=> (defn t1 [n c] (f (fn [] (dorun (map identity c))))) > > #'user/t1 > > user=> (t1 0 (range 1000000)) > > java.lang.OutOfMemoryError: Java heap space (NO_SOURCE_FILE:0) > > user=> (defn t2 [n c] (f (fn [] (doseq [x c] (identity x))))) > > #'user/t2 > > user=> (defn t1 [n c] (f (^:once fn* [] (dorun (map identity c))))) > > #'user/t1 > > user=> (t1 0 (range 1000000)) > > java.lang.OutOfMemoryError: Java heap space (NO_SOURCE_FILE:0) > > > > > > > > On Wednesday, September 11, 2013 7:39:48 AM UTC-7, Christophe Grand > wrote: > >> > >> ^:once on fn* (not fn, the fn macro doesn't propagate metadata) > instructs > >> the commielr to clear closed-overs ASAP. It follows that you can't call > such > >> a function twice because it forgets its closed-overs. > >> > >> > >> On Wed, Sep 11, 2013 at 4:36 PM, Brian Craft <craft...@gmail.com> > wrote: > >>> > >>> ugh. Can't find documentation for this. What does it do? > >>> > >>> On Wednesday, September 11, 2013 2:22:56 AM UTC-7, Christophe Grand > >>> wrote: > >>>> > >>>> > >>>> On Wed, Sep 11, 2013 at 6:00 AM, Brian Craft <craft...@gmail.com> > wrote: > >>>>> > >>>>> (defmacro transaction > >>>>> [& body] > >>>>> `(transaction* (fn [] ~@body))) > >>>>> > >>>>> I'm not sure how to avoid that. The anonymous function created here > >>>>> doesn't take parameters. > >>>> > >>>> > >>>> The fix for this is: > >>>> (defmacro transaction > >>>> [& body] > >>>> `(transaction* (^:once fn* [] ~@body))) > >>>> > >>>> It should be the default for all one-shot fns. > >>>> > >>>> Christophe > >>>> > >>>> -- > >>>> On Clojure http://clj-me.cgrand.net/ > >>>> Clojure Programming http://clojurebook.com > >>>> Training, Consulting & Contracting http://lambdanext.eu/ > >> > >> > >> > >> > >> -- > >> On Clojure http://clj-me.cgrand.net/ > >> Clojure Programming http://clojurebook.com > >> Training, Consulting & Contracting http://lambdanext.eu/ > > > > -- > > -- > > 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 unsubscribe from this group and stop receiving emails from it, send > an > > email to clojure+u...@googlegroups.com <javascript:>. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > -- > Sean A Corfield -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > World Singles, LLC. -- http://worldsingles.com/ > > "Perfection is the enemy of the good." > -- Gustave Flaubert, French realist novelist (1821-1880) >
-- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.