I am not a specialist in this area (although I call myself a mathematician). But they say that sometimes the outsider sees most of the game, or more likely that sometimes the idiot's point of view is useful.

To me the idea of non-reflexive equality (an object not being equal to itself) is abhorrent. Nothing is more likely to put off new Python users if they happen to run into it. And I bet even very experienced programmers will be tripped up by it a good proportion of the time they hit it. Basically it's deferring to a wart, of dubious value, in floating point calculations and/or the IEEE754 standard, and allowing it to become a monstrous carbuncle disfiguring the whole language. I think implementations of equal/not-equal which are make equality non-reflexive (and thus break "identity implies equality") should be considered broken.


On 27/04/2011 15:53, Guido van Rossum wrote:
Maybe we should just call off the odd NaN comparison behavior?
Right on, Guido.  (A pity that a lot of people don't seem to be listening.)


On 27/04/2011 17:05, Isaac Morland wrote:
Python could also provide IEEE-754 equality as a function (perhaps in "math"), something like:

def ieee_equal (a, b):
    return a == b and not isnan (a) and not isnan (b)

Quite. If atypical behaviour is required in specialised areas, it can be coded for. (Same goes for specialised functions for comparing lists, dictionaries etc. in non-standard ways. Forced explicit is better than well-hidden implicit.)
Of course, the definition of math.isnan cannot then be by checking its argument by comparison with itself
Damn right - a really dirty trick if ever I saw one (not even proof against the introduction of new objects which also have the same perverse non-reflexive equality).
- it would have to check the appropriate bits of the float representation.
So it should.


On 28/04/2011 11:11, Nick Coghlan wrote:
After all, why discard centuries of mathematical experience based on a decision that the IEEE754 committe can't clearly recall the rationale for, and didn't clearly document?
Sorry Nick, I have quoted you out of context - you WEREN'T arguing for the same point of view. But you express it much better than I could.


It occurred to me that the very length of this thread [so far!] perfectly illustrates how controversial non-reflexive "equality" is. (BTW I have read, if not understood, every post to this thread and will continue to read them all.)
And then I came across:
On 28/04/2011 09:43, Alexander Belopolsky wrote:
If nothing else, annual reoccurrence of long threads on this topic is a reason enough to reconsider which standard to follow.
Aha, this is is a regular, is it?  'Nuff said!

Best wishes
Rob Cliffe
_______________________________________________
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