August 31, 2026

Haskell for Hobos-- introduction

Once again, I am embarking on an effort to learn Haskell. I have found that a great way for me to learn is to try to turn what I am learning into information for other people.

If you find this useful (or not), please let me know.

Who this is for

If you are new to programming, don't start here, and don't start with Haskell. Python would probably be a better choice for a first time learner, or perhaps C if you are smarter than the average.

I assume that you are familiar with some programming language like C or python, and just desire to try Haskell for some reason.

Why Haskell

Haskell is different. Haskell is a functional language, and you are probably more familiar with an imperative language like C. In an imperative language you tell a computer what to do. In a functional language you tell the computer what things are.

Haskell has unique and surprising aspects that we will get into as we move along. You will almost certainly find that you will need to think about problems differently in order to write Haskell programs.

The differences are mind expanding. Even if you never write a useful Haskell program (and you very well might never do so), you will be better after wrestling with Haskell.

Haskell is very abstract, very high level, very mathematical. There are lots of new words and ideas, and it is my job to try to explain them.

Realistic expectations

People lie to you all the time about Haskell.
They say you can write useful code in Haskell.
They tell you that you don't need a PhD in math to understand Haskell.

These lies are not really helpful.
It is the exception, not the rule when somebody writes useful code. Haskell is extremely abstract, mathematical, and challenging even for people of above average intellect.

People do write actual useful code in Haskell, and they usually tell you how wonderful it is to do so. One of my complaints might be akin to what I might say about writing poetry in sanskrit. Very nice, but what about finding someone to maintain that code when you are gone? So I don't view Haskell as a useful tool to solve real problems, I view it as gymnastics to develop programming skills to use elsewhere. Here are two quotes to bear in mind.

I read recently that Newton described his work in science and mathematics as being like a child playing on the beach next to the ocean. He was simply doing what he enjoyed and exploring what he found in front of him. This is how I view Haskell and mathematics. It is all about enjoying myself and exploring.

The Haskell developers had the slogan "avoid success at all costs!". You can ponder for yourself exactly what this might mean.

A smart fellow that I greatly respect once said, "The problem with functional languages is that they don't function very well!" This comment has stood the test of time.

Your mileage may vary of course. I know a fellow who wrote code for an important project in LISP (and had coworkers who cursed him for doing so).


Have any comments? Questions? Drop me a line!

Tom's software pages / tom@mmto.org