On Learning Haskell

Last updated on May 9, 2022

Haskell is an interesting language, but the tooling around it isn't as nice as TypeScript's.

How We Got Here

I love functional programming. Last year, I started learning about how to do FP in JavaScript and found lots of resources on the topic. I loved the style of FP and it made sense to me far more than OO did. I decided I should learn a real FP language to fully satisfy my thirst for FP knowledge. I had heard of Haskell and how hard it was supposed to be. I was gonna try Haskell, but then I heard about PureScript, which was supposed to be Haskell for JavaScript. The learning materials for PureScript weren't great, kind of old, and it seemed like I need to use Bower to install packages. I then found ReasonML which I really liked. It was FP-enough to start with, but after doing lots of work with TypeScript, I found myself thinking, "Maybe TypeScript is fine. I don't need an FP language to do FP."

But I kept thinking about learning a real FP language. ReasonML became ReScript and the ReScript team doesn't care about FP. ReScript is less of an FP language than ReasonML. PureScript seems like a nice language, but after getting comfortable with TypeScript and seeing how well it plays with the rest of the JavaScript ecosystem, I don't think it's worth using another "compiles to JS" language. But I still have an interest in FP. So we're back to Haskell.

How I'm Learning Haskell

I've learned a lot of languages from actual books. I've been far more successfull learning from books than from tutorials. I found Haskell Programming from First Principles and it seemed like the thing to get. I was all set to buy it when I found out the author had online courses available. The platform is called TypeClasses and the beginner crash course is free. It's pretty good and I felt like I picked up a lot of Haskell as I was building a simple program.