A persistent theme for the entirety of my adult life as a programmer has been attempting to learn the Haskell programming language. Everything about the language appeals to me, from strong static typing to lambdas (my first exposure to them) to its purity. Despite these repeated attempts over the last ten years, I have been unsuccessful in becoming a proficient Haskell programmer.
So what’s kept me from Haskell enlightenment?
Stubbornness, pure stubbornness. Or at least so I’m convinced.
See, the Haskell community is rich and plentiful with very smart people. Additionally, Haskell has incorporated some ideas from mathematics. These mathematical ideas introduced words like Monad and Monoid into the vocabulary of the community. While the constructs in Haskell share the same name as their namesakes in mathematics, they are not identical.
So we have a community of very smart individuals and a set of semi-obscure mathematics concepts which mostly describe concepts in Haskell. Now, when they write books, guides, or tutorials about Haskell, they use this expanded vocabulary that is outside most programmers’ experience.
Back to me, this is a story about me. I’m stubborn. Haskell presented a unique challenge for me. It came with a vocabulary that I felt was elitist. For a long time, I counted myself in the camp of folks that jokingly told other programmers that Haskell requires a PhD in math as a prerequisite to learning it. I read all of the books (LYAH, RWH, you name it) but still, it just never stuck. The concepts were beautiful, but the details felt heavy handed with obscure math concepts.
Well the stubbornness runs both ways - because I’ve never gotten the hang of Haskell, I’ve yet to give up on learning it. My latest attempt was initiated by a new Haskell book called Haskell Programming from First Principles. Typically, I’d have ignored the book but the story of one of the authors caught my eye. She is not a professional programmer by trade and was taught (from first principles) by her co-author.
The story of the author reminded me of my stubbornness and so here we are. I’m reading this new book, learning Haskell in a new way, and hoping this time it sticks.