
On Fri, 2 Feb 2007 06:46 am, Paul Johnson wrote:
I think we should also try to get some feedback about the learning experience: what tutorials work best, and what don't? Do metaphors for monads work?
Fwiw, here's an excerpt from something i wrote in my blog about monads (where i've substituted links with references to footnotes): "People have tried to communicate what Haskell monads are about in various ways: via 'container' metaphors (e.g. this[1] and this[2]; i found the former to be more illuminating than the latter); via relationship metaphors (e.g. this[3], which i found more confusing than helpful), and even via a 'monsters' metaphor[4] (which i found to be rather amusing)1. One tutorial that people on the Haskell-café list seem eager to recommend (and that's recommended on the Haskellwiki) is All about monads[5], but that just overwhelmed me when i first read it; and even now, when i've got a better understanding of monads, i still find it difficult to follow. In contrast, i found Tackling the awkward squad[6] and Monads for functional programming[7] to both be very enlightening. As far as i can tell, however, a monad simply seems to be a computational environment in which one can specify that certain types and methods of computation be performed, and in which the three monad laws are expected to hold." [1] http://www.haskell.org/haskellwiki/Monads_as_containers [2] http://en.wikibooks.org/wiki/Haskell/Understanding_monads [3] http://www.haskell.org/haskellwiki/Meet_Bob_The_Monadic_Lover [4] http://www.haskell.org/pipermail/haskell-cafe/2006-November/019190.html [5] http://www.nomaware.com/monads/html/ [6] http://research.microsoft.com/~simonpj/papers/marktoberdorf/ [7] http://homepages.inf.ed.ac.uk/wadler/topics/monads.html To that, i would also add that i've found Martin Grabmueller's "Monad Transformers Step by Step" ( http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html ) and Simon Peyton-Jones' "Beautiful Concurrency" ( http://programming.reddit.com/info/vsba/comments ) to be very readable and enlightening. Finally, i enjoyed reading Hal Daume III's "Yet Another Haskell Tutorial", since unlike many introductions to Haskell, it assumed that i was already familiar with a variety of programming concepts. My background: well, firstly, apropos of the recent discussions about the qualifications of those studying / learning Haskell, i have a Bachelor of Arts degree majoring in Womens' Studies. :-) i have, however, done professional development work using both Perl and VBA (the latter in the context of MS Access). The only formal mathematical training i've had is the mathematics i did at secondary school, which went up to and included the basics of differentiation and integration. Having said that, i have continued to teach myself various areas of mathematics (e.g. set theory and point-set topology - category theory i'd like to learn more about, but am struggling to get around to doing so). i must say i'm really enjoying learning Haskell: not only because, as a side effect :-), i'm ending up learning various bits and pieces about computer science; but also because i've come to very much appreciate the Haskell community. In contrast with other IT-related communities i've experienced, i've found the Haskell community (both here and on IRC) to generally be helpful, good-humoured and mercifully lacking in flames and alpha behaviours. :-) i'm really hoping this "Cookbook" project happens - it would be great to be able to turn to Haskell for solutions to the sort of problems i come across on a regular basis, so that i'm no longer solely thinking in terms of Perl solutions to those problems. :-) Alexis.