To grow my programming repertoire, I decided to learn a functional language; at the recommendation of a friend, I selected Haskell. Thus far, it seems great. As a mathematician at heart, I love the way that the notation and language constructs resemble math (list comprehensions, tuples, function composition, etc). In this blog post, I will outline the major resources I am using to learn Haskell.
To learn Haskell, I am using the ebook Learn You a Haskell for Great Good. Yes–terrible grammar in the title, but it’s (fairly) grammatically correct on the inside. This is a great introduction to Haskell, although I’d highly recommend prior knowledge of another programming language like Java or C++.
Unfortunately, that ebook is somewhat lacking in practice problems. It does have examples, but there isn’t a true “exercise” section like one would find in a textbook. This is a common fault with online programming tutorials; to be honest, creating a good exercise set is hard work. To remedy this problem, I turned to a favorite site of mine, HackerRank.com. While designed for competitive programmers, this site also has an “introductory” set of functional programming challenges (see here). These range in difficulty from very easy to extremely hard. This provides a great compliment to the tutorial I referenced above.
Finally, one last resource I am going to use after finishing Learn You a Haskell is a set of lectures by former University of Virginia student-teacher Nishant Shukla. Although I have not been able to view them in great detail, they appear to present a great introduction to Haskell.