> No.  As you say the world1 value is immutable, but that's not
> contradictory.  If between 'getLine' and 'print' something was done by a
> concurrent thread, then that change to the world is captured by 'print'.
Well, that's technically true, but it basically amounts to saying that
the 'model' of IO is itself. If I see 'print x', I don't really think of
an action that performs arbitrary side effects and prints x in the
process (unless some error prevents even that). Some notion of
compositionality is required, which would allow me to state how 'print
x' contributes to the changes of the world in a way that doesn't depend
on any context. Actions in the state monad are composable in that sense,
while the same doesn't apply to the IO monad when explained in terms of
state passing.

Gergely

-- 
http://www.fastmail.fm - The professional email service

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to