[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.

-gregg


More information about the Haskell-Cafe mailing list