[Haskell-cafe] Monad explanation

Gregg Reynolds dev at mobileink.com
Thu Feb 5 15:03:37 EST 2009

On Thu, Feb 5, 2009 at 1:46 PM, Lennart Augustsson
<lennart at augustsson.net> wrote:
> You are absolutely right.  The statement
>  "The values of the IO monad are programs that do IO. "
> is somewhat nonsensical. Values don't do anything, they just are.

Whew!  So I'm not crazy.  I was starting to wonder.

> But values of the IO monad *describe* how to do IO; they can be seen
> as a recipe for doing IO.
> A recipe doesn't cook a dish, but when the recipe is executed by a
> cook they creates a dish.
> An IO values doesn't do IO, but when it is executed by the runtime
> system IO happens.
> This is one way of interpreting what the IO type means.
> (Another one is to say that Haskell is just an imperative programming
> language, but any imperative actions show up in the type.)

Thanks very much to you and everybody who contributed on the thread.
It's amazing how much one can learn on this list.


More information about the Haskell-Cafe mailing list