[Haskell-cafe] Why monad tutorials don't work

Michael Vanier mvanier at cs.caltech.edu
Tue Aug 14 18:40:31 EDT 2007

As you know, an arrow tutorial is like a wrapper around a monad tutorial, sort of like a container 
around it that can do extra actions with sufficient lifting.  The appropriate higher-order function 
to convert monad tutorials to arrow tutorials will be left as an exercise to the reader.

I'm becoming more and more convinced that metaphors for monads do more harm than good.  From now on 
I'm going to describe monads as purely abstract entities that obey certain laws, and that _in 
certain instances_ can be viewed to be like containers, or actions, or donuts, or whatever.  In 
other words, a monad is an abstract thing that can generate things that we can metaphorize, but it's 
pointless (point-free?) to try to capture the entire concept in a single metaphor.  I'm reminded of 
a physics teacher who was having a similar problem explaining the concept of tensors, until he said 
that "a tensor is something that transforms like a tensor does!".  So a monad is something that 
behaves like a monad does.

Mike (who obviously hasn't had nearly enough coffee today)

Dougal Stanton wrote:
> On 14/08/07, Dan Weston <westondan at imageworks.com> wrote:
> [snips another metaphor for monadic programming]
> No offence to Dan, whose post I enjoyed. The concept of wrapping is as
> close a metaphor as we seem to get without disagreements. But this has
> brought me to a realisation, after Paul Erdos:
> The Haskell community is a machine for converting coffee to monad tutorials.
> In the spirit of the venture, I will now suggest that someone points
> out that they don't like coffee, and that I haven't allowed for arrow
> tutorials ;-)
> Cheers,
> D.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list