FW: RE [Haskell-cafe] Monad Description For Imperative Programmer

Dan Piponi dpiponi at gmail.com
Wed Aug 1 12:01:58 EDT 2007


On 8/1/07, Andrew Wagner <wagner.andrew at gmail.com> wrote:
> For me, I think the key to monads is to really
> understand 2 things about them:
> ...
> 2.) Monads are about sequencing

Now I disagree on 2.

Monads are no more about sequencing than binary operators are about
sequencing. Sure, if you want to, you can define an operator like (*)
to be non-commutative, so that a*b is different to b*a, but that
doesn't really get to the essence of what a binary operator is. And in
everyday usage we use (*) to mean ordinary commutative multiplication
where there is no sense of sequencing.

The same holds for monads. If you want to use them for sequencing the
option is there, but there are plenty of commutative monads out there,
for which the order of operations doesn't matter, and the fact that
they are commutative doesn't make them any less monads. So while you
can use monads to sequence, I don't think sequencing gets to the
essence of what monads are.

I suspect I hold a minority view here... :-)
--
Dan


More information about the Haskell-Cafe mailing list