
Alistair, Hhhmmm. That is an interesting issue, and I am unsure how to treat it in the tutorial. I did attempt to explain the ability of the monad to isolate impure computations, but I think I need to make a better explanation of what an action is and how it is used. As for the question of whether using a monad in this way casts Haskell out of the ranks of the functionally pure, I don't know. This feels to me like a debate over personal interpretation, with decent arguments on both sides. I think the most accurate thing to say is that it enables Haskell to incorporate non-pure features without destroying the purity of the core of the language. Any suggestions for how best to present this issue to a reader who may be new to the world of FP? Should we mention it at all? Thanks, Jeff Alistair Bayley wrote:
Thanks. Quite comprehensive.
Peter Van Roy (the Mozart/Oz guy) said this on the PragProg list, and I didn't have the knowledge to respond. It's a point you might want to address, perhaps in this section?: http://www.nomaware.com/monads/html/laws.html#nowayout
[Discussion of whether I/O monad makes Haskell impure]
--
Jeff Newbern