
On Tue, 2007-08-14 at 09:55 -0500, Lanny Ripple wrote:
Having just gone through all the tutorials and things (again but this time I think it stuck) the Haskell community is on the wrong track as far as teaching Monads to new programmers.
If I were teaching addition and multiplication to children I wouldn't start with, "We'll begin by defining an algebraic structure named a "Group". From there we'll expand our concept to a "Ring" and "Field". A group is a set and a binary operator usually named "+" (or sometimes "*") such that...".
No no no. You start with, "You all know how to count from one to 10. If we have 1 item and we 'add' another 1 item we have 2 items. We write this 1+1=2."
For every monad tutorial of the former type, I can find ten of the latter. This is not the problem. A similar complaint is tutorials that invoke category theory; almost none of them do this either. What people need to do is stop reading two page blog posts by someone who's "just got" monads and read the well-written peer-reviewed papers by the people who clearly know what they are talking about. Luckily, for monads applied to Haskell we have Wadler, a witty, enjoyable and clear writer/speaker. All of Wadler's monad "introductions" are readable by anyone with a basic grasp of Haskell. You certainly don't need to be even remotely an academic to understand them. I'm willing to bet that many people who say they don't understand monads and have read "every tutorial about them" haven't read -any- of Wadler's papers.