Did you know that “null” is a concept that had to be invented? C.A.R. Hoare created it in 1965 as part of the Algol W language. I think adding “null” to programming languages was a giant step in the wrong direction. But you don’t have to take my word for it. C.A.R. Hoare agrees with me and calls it his Billion Dollar Mistake. Since “null” had to be invented and Algol W wasn’t the first programming language, that means that there must be programming languages without the concept of “null”.
But, how do they avoid this? For example, what if you get some data from a database and the row is not there? If a language doesn’t have “null”, how could it represent this state? The answer is with the Optional
type. In this article I’m going to explain in detail why you should prefer the Optional
type (AKA the Maybe type) over “null”. But before I explain this, I want to explain what I dislike about “null”.