My understanding was that the reason is that CSE can cause things to be shared that take up a lot of space when normally they would be garbage collected sooner. On Feb 18, 2012 11:57 AM, "Roman Cheplyaka" <r...@ro-che.info> wrote:
> It doesn't matter. Laziness would be affected if, for instance, > something is not evaluated without CSE and is evaluated with it. > > In your example either all or none of 'a' and 'b' get evaluated, > depending on whether the top-level expression is evaluated. > > * Victor Gorokgov <m...@rkit.pp.ru> [2012-02-18 18:23:19+0400] > > example = a + b + a + b > > > > exampleCSE = x + x > > where x = a + b > > > > With CSE we are introducing new thunk: x. > > > > 18.02.2012 17:38, Roman Cheplyaka пишет: > > >* Holger Siegel<holgersiege...@yahoo.de> [2012-02-18 12:52:08+0100] > > >>You cannot. Common subexpression elimination is done by GHC very > > >>conservatively, because it can not only affect impure programs: it can > > >>also affects strictness/lazyness and worsen memory usage of pure code. > > >>Like the HaskellWiki says: "If you care about CSE, do it by hand." > > >How can it affect strictness or laziness? > > -- > Roman I. Cheplyaka :: http://ro-che.info/ > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe