opCmp, [partial/total/pre]orders, custom floating point types etc.

John Colvin via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 12 11:21:47 PST 2016


On Tuesday, 12 January 2016 at 19:13:29 UTC, John Colvin wrote:
> On Tuesday, 12 January 2016 at 19:00:11 UTC, Andrei 
> Alexandrescu wrote:
>> On 01/12/2016 01:27 PM, John Colvin wrote:
>>> Preorder or partial order: not possible in D, opCmp insists 
>>> on totality.
>>
>> The way I look at it, a partial order would implement opCmp 
>> and opEqual such that a < b, b < a, and a == b are 
>> simultaneously false for unordered objects. Would that float 
>> your boat? -- Andrei
>
> a<=b and b<=a must also be false. That would work for a partial 
> order, yes. Unfortunately, that's not possible with the current 
> opCmp design, hence my 2 suggestions for improvements (I'm 
> pretty sure the second one is better).
>
> The key thing is to have a design that doesn't enforce totality.

s/totality/reflexivity

which also implies it can't force totality. Note that a 
non-reflexive <= doesn't imply anything about ==.


More information about the Digitalmars-d mailing list