Arnaud Clère <arnaud.cl...@free.fr> wrote in article <ik64e9$j6a$1...@dough.gmane.org> in gmane.comp.lang.haskell.cafe: > On 24/02/2011 09:30, o...@okmij.org wrote: > > The sort of laziness needed for non-deterministic programming calls > > for first-class store. It can be emulated, albeit *imperfectly*, > > for example, as was described in the ICFP09 paper. > What do you mean by "imperfectly"?
I think Oleg meant that, because the garbage collector only understands the native store and not our emulation of first-class stores, cells of a first-class store that are no longer referenced will nevertheless not be garbage-collected until the store itself is garbage-collected. What we need is a way to tell the garbage collector that the store reference and the cell reference are both needed to access the data so the data can be garbage-collected as soon as *either* the store reference *or the cell reference* is. (Analogy from the capabilities literature: the key and the lock are both needed to open the door so the door can be garbage-collected as soon as either the key or the lock is.) Any thoughts on how to achieve that? > Do you think implementing 'probM' with 'share' would lead to the same > performance problems you experienced in probM.hs? No, implementing probM with share would be like what OCaml HANSEI currently does, except in monadic notation rather than direct style. -- Edit this signature at http://www.digitas.harvard.edu/cgi-bin/ken/sig 1st graffitiist: QUESTION AUTHORITY! 2nd graffitiist: Why? _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe