[Python-Dev] Re: Rich comparisons
Delaney, Timothy C (Timothy)
tdelaney at avaya.com
Tue Mar 30 16:41:58 EST 2004
> From: Edward Loper
>
> Tim Delaney's suggestion [1] seemed pretty reasonable. In particular:
>
> - Ensure that NaN is a singleton (like True and False). I.e., the
> float constructor checks if the float is NaN, and if so returns a
> singleton.
Did I say that? I know I thought about the possibility of NaN being a singleton subclass of float, but I don't remember posting it ...
It would be nice, but I don't think it's overly feasible.
> Advantages:
> - We have an easy way to test if a variable is nan: "x is NaN"
> - nan will work "properly" as a dictionary key
This second statement is not correct. Since NaN would always compare non-equal with itself, it most definitely would not work as a dictionary key. My thoughts were that by having NaN as a separate class, it could raise if __hash__ were called i.e. explicitly preventing it from being used as a dictionary key.
> The important question is whether this would slow down other
> operations.
> As for cmp(), my understanding was that it should just return -1 if
> two unordered objects are not equal.
Nah - negative for <, 0 for ==, positive for >. And an exception if it's non-comparable (it used to be that __cmp__ wasn't allowed to raise an exception, but this restriction was relaxed).
Tim Delaney
More information about the Python-Dev
mailing list