I'll get to the title topic in just a minute. But first, more about
Real World Haskell. Currently I'm a little more than halfway through the book, and still liking it quite a lot. I'm currently halfway through the "Programming With Monads" chapter. I'm feeling that this chapter is a little dense with text and that more incremental baby-steps exercises would do it some good. Certainly they would do me some good. So I'm stopping where I am until I have time to sit down and write some more monadic code. I imagine it will take a few repetitions until I'm comfortable with it, but that seems like a fundamental skill if you want to write Haskell.
Now for the main feature: if I had to do it all over again, here's
what I would do to learn Haskell from scratch:
- Start by reading Learn You A Haskell. All the way through.
- Really get into some code with Write Yourself a Scheme.
- Read Read World Haskell from the very beginning, and don't skim through the earlier chapters; they have a different and useful way of presenting the basics. Yet I wouldn't start here; I learn best when I see a topic from a couple of different directions. I have the dead tree version of the book but there's a free PDF available here.
And here's
what I would not do:
- Read Monad tutorials early in the learning process. I wouldn't recommend it before reaching the monad chapter in Real World Haskell. First of all, the monad sections in Learn You A Haskell and Real World Haskell are quite good. Second, monad tutorials are more effective if they are immediately reinforced by some coding exercises. I think the best path to understanding monads is by using the damn things.
- Read any type theory content until . . . well, past where I am now. I have read some of this stuff and have yet to see any useful connection to actual Haskell code. I'm sure I'll get there eventually, but I'm not there yet.
- Do not start Haskell School of Expression unless you first find the source code and get it running.
Finally, there's something I
might do: read
The Haskell Road to Maths, Logic, and Programming. That book is rather less a book about programming Haskell and more a book about the foundations of mathematics. If that sounds interesting, then the exercises in the book are a nice way to get some coding practice as you are coming up to speed in Haskell.