Jonathan M Davis:

> You can think of a monad as an extra parameter which is passed to each 
> function 
> and holds the global state. It isn't a hole in purity at all. For instance, 
> it's 
> how Haskell manages to have I/O and yet be functionally pure. You don't need 
> the 
> compiler's help to do monads - it's just easier if you have it.

Yet, sooner or later the compiler has to help you giving you a hole to let the 
contents of those I/O monads pass though to/from the outside world, otherwise 
you will not see any program input/output unless you use something like a 
post-mortem debugger :-) So I think the Haskell compiler has to manage your I/O 
monads in a special way anyway. Purity can't be absolute.

Bye,
bearophile

Reply via email to