Many thanks to zipMe who provided some extremely valuable links in the comments to my last entry. You could have invented monads is the monad tutorial I have always longed for.

It explains the basics (the monad interface) and then describes how these basics can be used to achieve the various stuff you always see monads being used for (sequential programming, side effects) all with very focused examples and excercises, without much Haskell background needed. Not too theoretical to recognize the connection to Haskell, nor too practical to provide insight about the ideas behind monads.