IO is not referentially transparent. Show me functional I/O. Then show me the same thing imperatively. Which is simpler.
Name:
Anonymous2007-08-19 23:51 ID:h072jnb6
Programs that do I/O aren't purely functional. But programs that don't do I/O are boring and pointless. Therefore it's better to specify I/O in a manner that preserves referential transparency and obeys most of the conventions of the functional language underneath. Hence the IO monad in Haskell.
That good enough? No? Then go suck on some "uniqueness types" in Clean. Hint: they don't do parser monads in Clean.