3 ms·
> Logically-speaking, there is no such thing as Null, yet we’ve decided to represent it in our programs. But he's right. It shouldn't be an inherent part of an
by tathougies 9y ago
> Logically-speaking, there is no such thing as Null, yet we’ve decided to represent it in our programs.
But he's right. It shouldn't be an inherent part of any data. Sometimes, something not being present is a reasonable logical state to be in. For these times, there are tagged unions. In other cases, it is absolutely insane to simply add on the possibility of the NULL value to every data type in a language.
- jasode 9y ago>For these times, there are tagged unions. Again, tagged unions do not solve the author's examples of Aristotle logic puzzles and inconsistencies around null/None/Nil/Nothing/etc. He's not talking about "type safety" enforced by static compiler checks, or opt-in nulls as the default vs opt-out, etc. Therefore, compiler enforced explicit pattern matching code on tagged unions misses the point. I suggest you click on the Stackoverflow q&a link in the author's essay to get a better idea of what the his philosophical conversation is about. >In other cases, it is absolutely insane to simply add on the possibility of the NULL value to every data type in a language. That's a totally valid position but the author isn't talking about that. He's questioning the _meaning_ of "null" in light of observing (in his view) non-intuitive behavior with math and boolean operators. Your "tagged unions" doesn't address his philosophical conversation at all. My point is that if the author removed "null" from a hypothetical language because it's "weird", the users of such a hypothetical language would recreate the "null" again. This has nothing to do with discriminated unions or Option<T>.