
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
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
[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/