On Fri, Nov 14, 2003 at 12:22:00AM +0100, Tomasz Zielonka wrote:
>
> There is more to it. Let's define
>
>     t2 :: IO ()
>     t2 = sequence_ $ repeat $ return ()
>
> t2 behaves in the same way. However, if you compile the module with
> GHC
> with optimisations turned on, both t and t2 run in constant space. OK,
> I
> understand that GHC doesn't do optimisations in interpreted code.
>
> The strange thing is that if you execute
>
>     *A> runStateT (sequence_ $ repeat $ return ()) 1 :: IO ((), Int)
>
> directly in GHCi, then is seems to run in constant space.

I guess it is an infamous CAF leak - f expands into an infinite
expression which can't be reclaimed because it is bound to a top-level
variable. When compiling with optimisations GHC somehow manages to avoid
this problem.

Can somebody confirm this?

Best regards,
Tom

-- 
.signature: Too many levels of symbolic links
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to