[Haskell] threading mutable state through callbacks
jules at jellybean.co.uk
Tue Oct 12 13:28:41 EDT 2004
On 12 Oct 2004, at 14:08, Adrian Hey wrote:
>> x <- someAction
>> y <- someAction(x)
> I would say keep things as they currently are with the unsafePerformIO
> solution, I.E. Order unspecified, the action that creates a particular
> top level thing is executed only once, when the value of thing is
> demanded (perhaps not at all).
Also consider the case of
z = someAction(y)
Here z is a value outside the IO monad, calculated using a function
outside the IO monad, based on a value (y) which also lies outside the
IO monad... What sane semantics will explain when the actions which led
to the value y should be taken?
I think what people are trying to suggest is an 'initialization phase'
in the IO monad, which takes place "before" the pure functions are
defined. At compile time, conceptually. I don't have any clear idea how
that should be made precise.
More information about the Haskell