
On 8/2/07, Dougal Stanton
Do I have an suggestions? Well, maybe the right way would be to do as we do with map and fold, etc: show the explicitly recursive example, then generalise. So, show how we could we would thread state in Haskell, or how we would do optional (Maybe-style) values, then generalise, *slowly* coalescing the more similar monads first before reaching the 'top' of the monadic phylogenetic tree.
Hmm, I can see that previous paragraph is not as clear as it could be. But anyway: has anyone used this approach before?
These immediately came to mind: "You Could Have Invented Monads! (And Maybe You Already Have.)" http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html [http://tinyurl.com/ecqzl] "Monads for Functional Programming" http://citeseer.ist.psu.edu/wadler95monads.html [http://tinyurl.com/2foj46] I personally received my first monadic enlightenment from Bird's "Introduction to Functional Programming using Haskell", which also uses the same approach. I think it's an excellent way to approach the topic. Stuart Cook