This is nice and simple. My only concern is I'm not sure there's enough of a distinction between "Monad" and "State Monad". That is, I'm not sure it's clear enough that the way you're binding the small programs together in the initial example is only one way you could bind them together, and thus it's only one instance of Monad.

On Wed, Feb 4, 2009 at 12:41 PM, Tim Newsham <newsham@lava.net> wrote:
I put up a small Monad explanation (I wouldn't quite call it
a tutorial):
 http://www.thenewsh.com/~newsham/haskell/monad.html

The intent here is to is to have a short description of what
a Monad is that is approachable by Haskell beginners or non-
Haskell programmers who are looking for an intuitive definition
but may not yet have the background or the inclination to
jump into full tutorial to tackle the subject.

Tim Newsham
http://www.thenewsh.com/~newsham/
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe