Hacker News new | ask | show | jobs
by happytoexplain 97 days ago
`NaN == NaN` vs `NaN != NaN` forces us to pick which idea to violate:

1. A value of a given type, either a literal or a value in memory, should represent a single concrete value, semantically (`5` represents the number five).

2. Classical logic (if A = B is true, then A != B is false).

I vote for violating #1, because we control those terms better. Is it weird that we invented a value that represents "unrepresentable" (as opposed to representing "no value")? Yes, but there are practical reasons for why we did it. It would be much more weird/surprising to violate classical logic.