Avoid null: Use an Optional type instead

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”.

Continue reading