Avoiding CAF's
Simon Marlow
simonmarhaskell at gmail.com
Thu May 24 07:30:35 EDT 2007
Neil Mitchell wrote:
> Hi Simon,
>
>> Ok, but suppose you get some good results - what's the point? None of
>> this is
>> guaranteed to work tomorrow. Why not aim for a robust translation
>> into Core
>> that preserves the semantics? It can't be that hard to pass around a
>> State#
>> RealWorld, can it?
>
> Is there a paper/document that gives the current design for the IO
> Monad as implemented in GHC, particularly with what things have zero
> runtime cost? I have a reasonable idea, but would like to make sure I
> know exactly whats going on before getting down to a very low level
> with this.
Not really, this is something we should document in the commentary. The basic
idea is that a value of type "State# s" for any s takes up zero registers or
stack slots. However, a value of type "State# s -> a" is certainly different
from a value of type "a", because for example seq can tell the difference. So
an argument of type "State# s" behaves like any other argument: it can be
partially applied, etc., the difference is that the actual value takes up no space.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list