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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4