[Haskell] Control.Monad.Writer as Python generator
Jan-Willem Maessen
jmaessen at alum.mit.edu
Fri Apr 15 19:03:34 EDT 2005
On Apr 15, 2005, at 6:07 PM, ChrisK wrote:
>>> You are correct. Moand.Cont yield even runs without -O optimizing,
>>> just slower
>>> ...
>>> Anyone have an idea why ghci can't garbage collect it?
>>> Is this an actual bug or an innate quirk of the REPL ?
>>
>> GHCi does not "compile" with optimizations, without -O the strictness
>> analyzer
>> isn't run.
>
> The optimizer is irrelevant to whether it runs in constant space, as
> ghc without '-O' runs it just fine. The optimizer is only useful for
> speed, which is not the issue.
Not true! The optimizer can change the asymptotic space consumption of
your program. The example of sum is particularly germaine. If we
write:
x = foldl (+) 0 [1..n]
this will, as it is evaluated, generate the suspended computation
(((....((((0 + 1) + 2) + 3) + ...) + n
This require O(n) space.
Whereas the strict foldl' will evaluate each parenthesized expression
as it is encountered:
(0+1) = 1
(1+2) = 3
(3+3) = 6
(6+4) = 10
...
(... + n) = your answer
If only we all used mostly-eager evaluation, these kinds of confusions
would [almost] never happen.
-Jan-Willem Maessen
>
More information about the Haskell
mailing list