> Shouldn't an operator on incompatible types return undefined? ;)

NaN is a value of the Number type; I think there are some problems with deciding that Number is not compatible with Number for equality.

We just need another value in the boolean type called NaB, and then NaN == NaN can return NaB.

To complement this, also if/then/else should get a new branch called otherwise that is taken when the if clause evaluates to NaB.