Such is the volume of books and online resources available that it can be difficult to decide where to start when learning Haskell. If in doubt, take a quick look at the monad tutorials timeline.
So when at Pusher we decided to re-build core platform elements with Haskell, part of the challenge was to pinpoint the right resources. The Haskell wiki has an extensive book list and list of tutorials, but the sheer quantity of material can be overwhelming.
The most convincing starting point however is the path advocated by Chris Allen (he has no relation with or stake in Pusher). Interestingly, as a practitioner and a teacher, he takes into account the quality of the material as well as its pedagogical value. His Haskell book review is thorough enough to get a fairly accurate idea of strengths and weaknesses of the most authoritative books out there.
In the end, we’ve complemented his reading list with a few choices of our own.
- Learn you a Haskell. LYAH is easy to read cover to cover and is more about teaching language features rather than solving real world problems (i.e. it doesn’t spend too long on IO).
- cis194 spring 2013. More rigorous approach than Learn you a Haskell, it is also a little bit less accessible due to the fact that it is intended to be presented in a classroom where students can ask questions.
- Real World Haskell. RWH on the other hand is better for just dipping into the odd chapter but it is really useful for more advanced topics that crop up in the real world; it proved particularly useful for example with profiling/fixing memory leaks, learning about Haskell’s concurrency model and error handling.
- Try Haskell is an online interactive Haskell tutorial which makes it easier to follow along.
- As far as exercises go, H-99: Ninety-Nine Haskell Problems and 20 Intermediate Haskell Exercises are good brain teasers.
- Hoogle is by far the best tool to look up anything Haskell related, even type signatures!
- What I wish I knew when learning Haskell is a good read once you’ve read the above literature.
- As far as community goes, there are IRC channels such as #haskell-beginners, the Haskell subreddit and there are also tons of meetups which are great for face-to-face conversations, experience sharing, etc.
Covering all the material above will take a while, but do not give up. Your efforts will be truly worth it. Last but not least, the Haskell community is incredibly nice, welcoming, and helpful. And they are very smart. In fact, we received incredibly valuable feedback from the last blog posts we published on the subject.