[From the old-posts-that-I've-sat-on-for-entirely-too-long-for-no-apparent-reason department...]
Back in December, I finished FP101x, Introduction to Functional Programming. I'm stoked that I finally learned me a (little) Haskell, after wanting to get around to it for so long.
The first part of the course was very straight-forward covering the basics of programming in the functional style. But the difficulty ramped up quickly.
A couple of labs were particularly mind-bending, not just for me judging by the message boards. Both were based on Functional Pearl papers and featured monads prominantly. The first was on monad parser combinators and the second was based on A Poor Man's Concurrency Monad. Combining concurrency (of a simple kind), monads and continuation passing is a lot to throw at people at once.
The abrupt shift to more challenging material is part of a philosophy of "teaching the students to fish for themselves". So is introducing new material in the labs rather than in the lectures. This style of teaching alienated a number of students. It's not my favorite, but I can roll with it.
Just be aware that the course requires some self-directed additional reading and don't flail around trying to solve to homeworks without sufficient information.
More Haskell
Now that the class is over, I'd like to find time to continue learning Haskell:
- Finish Learn You a Haskell
- Write yourself a Scheme in 48 hours
- 99 Haskell Problems
- Typeclassopedia
- Chris Allen, aka bitemyapp has a really great How to learn Haskell guide as well as some interesting thoughts about furthering your functional education
- The Haskell Road to Logic, Maths and Programming
One reason I wanted to learn Haskell is to be able to read some of the Haskell-ish parts of the programming languages literature:
- Why Functional Programming Matters - John Hughes
- Theorems for free! - Philip Wadler
- The essence of functional programming - Philip Wadler
- A history of Haskell: being lazy with class - Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler