In an article published on his personal blog, Daniel Westheide explains why overloading the semantics of Scala’s Option type can lead to confusion and why introducing custom algebraic data types leads to code that is easier to read, less error-prone and closer to the language of the domain.