david:Ah... so the secret is in the hidden variables. On some level I am beginning to fear that Monads resurrect some of the scariest aspects of method overriding from my OO programming days. Do you (all) ever find that the ever changing nature of >>= makes code hard to read?You always know which monad you're in though, since its in the type. And the scary monads aren't terribly common anyway.