[Haskell-cafe] Monad explanation

Jonathan Cast jonathanccast at fastmail.fm
Thu Feb 5 15:27:01 EST 2009

On Thu, 2009-02-05 at 12:21 -0800, David Leimbach wrote:
> On Thu, Feb 5, 2009 at 11:25 AM, Andrew Wagner
> <wagner.andrew at gmail.com> wrote:
>                         I think the point of the Monad is that it
>                         works as a container of stuff, that still
>                         allows mathematically pure things to happen,
>                         while possibly having some opaque "other
>                         stuff" going on.

>          This at least sounds, very wrong, even if it's not. Monads
>         are not impure. IO is, but it's only _one_ instance of Monad.
>         All others, as far as I know, are pure. It's just that the
>         bind operation allows you to hide the stuff you don't want to
>         have to worry about, that should happen every time you compose
>         two monadic actions.

> Well all I can tell you is that I can have (IO Int) in a function as a
> return, and the function is not idempotent in terms of the "stuff"
> inside IO being the same.

Sure it's the same.

>  cmp /bin/cat /bin/cat
> cp /bin/cat ~
> cmp /bin/cat ~/cat

Pretty much the same, anyway.


More information about the Haskell-Cafe mailing list