One of the favorite exercises on the web nowadays is to write Monads tutorial. I struggled through the concept until having seen this video from Brian Beckman of Microsoft Research.:
http://channel9.msdn.com/Showpost.aspx?postid=358968
It is a terrific video and explain Monad in the context of function “composability”. Highly recommended!!
I will write a short summary of my understanding when I get time.
Within one or two weeks, I’ll be teaching monads to my students. Actually, I’ve started slowly with error monads and I’ve promised that such a thing could be generalized. Still, I’ll take a look at that video, it might be interesting to see how monads can be explained “live”.