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" <[email protected]> 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 <[email protected]> [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<[email protected]>  [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
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to