From: David Bergman (davidb_at_[hidden])
Date: 2003-10-21 09:50:02
> OK, I think what's missing here is why monads are absolutely
> necessary in a language like Haskell. While Haskell has
> different (non-monadic) ways to handle List and Maybe monads,
> the real issue here is the IO monad.
> Haskell is a lazy language. In fact, there is no way to turn
> or override laziness in Haskell - basically every operation
> in Haskell is understood to take some arguments and return a
> result. Side-effects are non only not allowed, they can't be
This has nothing to do with laziness. One can conceive a lazy albeit
side-effecting language, and view the I/O channels as lazy streams and the
output stream as having an eager consumer.
It has to do with purity, that Haskell is a pure language in the sense of an
expression ALWAYS evaluating to the same value, so that the same exact
expression can be substituted for that computed value wherever, whenever.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk