[Python-Dev] Why is nan != nan? (original) (raw)
Mark Dickinson dickinsm at gmail.com
Wed Mar 24 23:31:42 CET 2010
- Previous message: [Python-Dev] Why is nan != nan?
- Next message: [Python-Dev] Why is nan != nan?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, Mar 24, 2010 at 10:30 PM, Alexander Belopolsky <alexander.belopolsky at gmail.com> wrote:
On Wed, Mar 24, 2010 at 6:21 PM, Raymond Hettinger <raymond.hettinger at gmail.com> wrote: ..
If we want to be able to reason about our programs, then we need to rely on equality relations being reflexsive, symmetric, and transitive. Otherwise, containers and functions can't even make minimal guarantees about what they do. +1
.. We should probably draw the line at well-defined numeric contexts such as the decimal module and stop trying to propagate NaN awareness throughout the entire object model. I am not sure what this means in practical terms. Should float('nan') == float('nan') return True or should float('nan') raise an exception to begin with? I would prefer the former.
Neither is necessary, because Python doesn't actually use == as the equivalence relation for containment testing: the actual equivalence relation is: x equivalent to y iff id(x) == id(y) or x == y. This restores the missing reflexivity (besides being a useful optimization).
Mark
- Previous message: [Python-Dev] Why is nan != nan?
- Next message: [Python-Dev] Why is nan != nan?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]