1,188 karma · joined September 2, 2012
So, what made learning Haskell a good experience I think was mainly the strong type system. You could basically even early on use functions you barely knew what its name meant solely based on its type signature. It also made the progress of writing a program very nice, you write it and then it fails, you go back and try fix it, and when it compiles it usually worked.
There are some things to keep in mind though. Wild recursion is really the GOTO of functional languages, it's important to teach how to use the generalized folds and traversals early on. Secondly it is important to have simple analogies to concepts such as functors, monoids and monads etc. If you make sure to not care about these strange names then you can go pretty far by just trying to make the type signatures stick together, and it's not important for a beginner to grasp these directly either.
Python was quite smooth to learn coming from Haskell, the syntax is similar and it simply felt like programming in Haskell's do-blocks. It was very easy to get quickly going, I managed to write a little script talking to a JSON API almost directly after reading the official tutorial. I also digged a little bit into the realm of OOP, I wrote a simple game using Kivy. It felt quite nice actually, I could get some code re-use, although it was harder to get that (as newbie) than in Haskell.
EDIT: Something like typed Racket might been even better when I think about it, since Racket got a lot of resources for complete beginners. Then you get the benefit of easy to use syntax too, although syntax is probably not the biggest problem when starting out. For the record I usually recommend Python or Racket when people ask me where to start, because in the end I don't think it matter much what language you go with first, just make sure not to limit the paradigm of languages you learn afterwards.
God, I love Apple. Now I just wish real innovative languages could market themselves as efficient.
Seriously though, there's tons of resources for beginners in Haskell. School of Haskell, above mentioned books, tons of good SO answers, #haskell at freenode is super friendly and helpful, Haskell for All by Tekmo is a good blog making sense of some more advanced Haskell stuff, there's probably more that I've missed to mention.
The best way to learn Haskell is to write a lot of Haskell and being interested in learning interesting stuff (that might be quite abstract for some time before you get a good intuition and can apply it to real world code).
Doesn't require any binary blobs and comes with Trisquil GNU/Linux pre-installed.
* First Law: A robot must never harm a human being or, through inaction, allow any human to come to harm.
* Second Law: A robot must obey the orders given to them by human beings, except where such orders violate the First Law.
* Third Law: A robot must protect its own existence unless this violates the First or Second Laws.Although it uses virthualenv instead of a cabal sandbox.