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.
- 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.