ProtoObject and comparison for equality and ordering

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed May 15 00:19:05 UTC 2019


On 5/14/19 10:06 PM, Mike Franklin wrote:
> On Tuesday, 14 May 2019 at 20:36:08 UTC, Eduard Staniloiu wrote:
> 
>> Should `opCmp` return a float?
>>
>> The reason: when we attempt to compare two types that aren't 
>> comparable (an unordered relationship) we can return float.NaN. Thus 
>> we can differentiate between a valid -1, 0, 1 and an invalid float.NaN 
>> comparison.
> 
> Seems like a job for an enum, not a float or an integer.

I repeat myself: this won't work.

Recall that a < b is lowered into a.opCmp(b) < 0. So we have a 
comparison against the literal 0. For that float works nicely because 
nan etc etc.


More information about the Digitalmars-d mailing list