Critique of the IO monad being viewed as a state monad operating on the world
- by Petr Pudlák
The IO monad in Haskell is often explained as a state monad where the state is the world. So a value of type IO a monad is viewed as something like worldState -> (a, worldState).
Some time ago I read an article (or a blog/mailing list post) that criticized this view and gave several reasons why it's not correct. But I cannot remember neither the article nor the reasons. Anybody knows?
Edit: The article seems lost, so let's start gathering various arguments here.
I'm starting a bounty to make things more interesting.