Hacker News new | past | comments | ask | show | jobs | submit login

NULL doesn't mean "no value", it means "unknown value". It's much closer in meaning to IEEE floating point "NaN" than to Haskell/ML "None". In particular, NULL != NULL. Also like NaN (and unlike, say, Bottom), it is testable via special predicates.

(I think, though I may be wrong, that a lot of the trouble with NULL stems from the very fact that it is testable. Were it more like Bottom – i.e., merely a means of lazily representing erroneous expressions to overcome limitations of a non-dependent type system – designers would be forced to encode meaning explicitly and we wouldn't be having this conversation.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: