Back in college, Haskell was just something I’d seen on mentioned Reddit and a few other places. I didn’t really have a good reason to look at it seriously — that is, until I needed a senior project topic. (If you’re still looking for a reason to learn Haskell, read Job’s recent post about how it made him a better programmer.)
I’d been kicking around an idea for an IDE (not unlike LightTable) with a different take on how to render code while it’s being developed.
I’d decided to try and build my software for some Scheme variant since it would be comparatively easy to parse and analyse. This, oddly enough, was the stimulus that got me into Haskell. I found a tutorial that walked me through using the Parsec parser-combinator library to parse a Scheme dialect. It was exactly what I needed, and it seemed to be a really good tutorial on the language overall.
Of course, nothing actually ended up showing much value from my project — except, that is, the side effect of my introduction to and continued study of Haskell.
Write Yourself a Scheme in 48 Hours
One of the various sites I frequented at the time put a link to Write Yourself a Scheme in 48 Hours in front of me; this was the tutorial I used to help me write a parser for my project. The introduction to Haskell provided by this writing was enough to whet my appetite.
It also gave me a good, concrete example of how to apply the language to a real problem. Being able to end up with something that was, well, useful proved to be incredibly helpful to the learning process. It taught me to use Haskell as a tool.
Once I’d gone through most of “Write Yourself a Scheme in 48 Hours”, I switched to the Haskell Wikibook. This is a more encyclopedic discussion of the language and made an excellent reference to more of the languages basic and advanced features.
The haskell-cafe mailing list was incredibly helpful early on. So many of my questions were answered in timely fashion and also in a polite, cordial, and accepting way. I asked my share of rather obtuse questions, and no one ever laughed at me, poked fun at my ignorance, or made me feel badly about asking.
Finally, the #haskell IRC chatroom on irc.freenode.net was amazing. Many, many people helped me whenever I asked. They rejoiced with my success and helped me through my struggles. #haskell and its members made me a better programmer.
In all, the community was a huge motivating force behind helping me learn Haskell. There are, of course, excellent sources from which to learn Haskell that I haven’t mentioned. But these listed here are what I ended up using. I am very thankful to the people who taught me, as much as I am thankful for the things that they wrote to help me along.