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.
Jules
_______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell