
Duncan Coutts wrote:
On Tue, 2009-07-14 at 03:01 -0700, Michael Vanier wrote:
Charles,
Haskell is a wonderful language (my favorite language by far) but it is pretty difficult for a beginner. In fact, it is pretty difficult for anyone to learn in my experience, because it has so many advanced concepts that simply don't exist in other languages, and trying to absorb them all at once will likely be overwhelming.
As a contrary data-point, at Oxford we teach functional programming (using Haskell) as the first course at the very beginning of the computer science degree. I know several other universities also use FP and Haskell very early on in their CS courses.
At Minho we've been using Haskell as first programming course in CS degrees since 1997-98. Such a 'functional first' approach is the natural way to start a background on programming. Look at the hardware side, for instance: which of the following kinds of digital system is taught first: combinatorial (eg. nand, nor gates) or sequential (eg. flip-flops)? The first, of course, because such circuits are functional (no state, no feedback). More recently I had a go at teaching Haskell to beginners in a non CS context (to arts students studying musicology, actually). If you are interested, have a look at the slides available from the course's URL: www.di.uminho.pt/~jno/html/ipm.html#sec:mp (Under Acrobat some scores will start playing music once you click the "pin" symbol on the right.) All comments, suggestions etc are welcome. jno