Comparisons of incompatible types

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Dec 9 18:11:28 EST 2010


On Thu, 09 Dec 2010 12:21:45 +0000, Mark Wooding wrote:

> John Nagle <nagle at animats.com> writes:

>> "sort" has failed because it assumes that a < b and b < c implies a <
>> c. But that's not a valid assumption here.
>>
>> It's not good to break trichotomy.
> 
> You're confused.  The property
> 
>         a < b and b < c => a < c
> 
> is called `transitivity'.  

Yes, but I believe that John is referring to the trichotomy (like a 
dichotomy, only there are three options instead of two) that exactly one 
of these relations are true:

a < b
a == b
a > b

It is true for real numbers, but not for IEEE floats, since none of the 
three are true if either a or b are a NAN. (Non-IEEE floats could do 
anything...)


[...]
>   2. Totality: a <= b or b <= a
> 
> The above list sorting goes wrong because the `float' ordering isn't
> total.  In particular, x </= NaN and NaN </= x for all x (including x =
> NaN!).

I believe this is equivalent to trichotomy.


> So, your last remark is in the right direction (though strict trichotomy
> is unnecessary, as I've mentioned), but apparently only by accident
> since the preceding discussion is completely wrong.

"Completely" is surely a tad strong -- John might not be using the exact 
same terminology as you, but he's clearly talking about the equivalent 
concepts. He wants and expects all data types to either meet a total 
order, or raise an exception to any of the < > <= and >= operators.


-- 
Steven



More information about the Python-list mailing list