Terry Reedy wrote:

I think the committee goofed -- badly. Statisticians used missing value indicators long before the committee existed. They has no problem thinking that the indicator, as an object, equaled itself. So one could write (and I often did through the 1980s) the equivalent of

for i,x in enumerate(datavec):
  if x == XMIS: # singleton missing value indicator for BMDP
    datavec[i] = default

But NANs aren't missing values (although some people use them as such, that can be considered abuse of the concept).

R distinguishes NANs from missing values: they have a built-in value NaN, and a separate built-in value NA which is the canonical missing value. R also treats comparisons of both special values as a missing value:

> NA == NA
[1] NA
> NaN == NaN
[1] NA

including reflexivity:

> x = NA
> x == x
[1] NA

which strikes me as the worst of both worlds, guaranteed to annoy those who want the IEEE behaviour where NANs compare unequal, those like Terry who expect missing values to compare equal to other missing values, and those who want reflexivity to be treated as an invariant no matter what.



NaN is Not a Number (therefore should be neither a float nor a Decimal).
Making it a new class would solve some of the problems discussed,
but would create new problems instead.

Agreed, if we were starting fresh.

I don't see that making NANs a separate class would make any practical difference what-so-ever, but the point is moot since we're not starting fresh :)


Correct behaviour of collections is more important than IEEE conformance
of NaN comparisons.

Also agreed.

To be pedantic, the IEEE standard doesn't have anything to say about comparisons of lists of floats that might contain NANs. Given the current *documented* behaviour that list equality is based on object equality, the actual behaviour is surprising, but I don't think there is anything wrong with the idea of containers assuming that their elements are reflexive.





--
Steven
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to