WAT: opCmp and opEquals woes
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 23 14:35:03 PDT 2014
On 7/23/14, 11:52 AM, H. S. Teoh via Digitalmars-d wrote:
> On Wed, Jul 23, 2014 at 11:48:42AM -0700, Andrei Alexandrescu via Digitalmars-d wrote:
>> On 7/23/14, 9:45 AM, H. S. Teoh via Digitalmars-d wrote:
>>> Why isn't "a==b" rewritten as "a.opCmp(b)==0"?? I'm pretty sure TDPL
>>> says this is the case (unfortunately I'm at work so I can't check my
>>> copy of TDPL).
>>>
>>> https://issues.dlang.org/show_bug.cgi?id=13179
>>>
>>> :-(
>>
>> It's a good decision. There are types that are comparable for equality
>> but not compared for ordering. -- Andrei
>
> That's the wrong way round.
No.
> I fully agree that we should not
> autogenerate opCmp if the user defines opEquals, since not all types
> comparable with equality are orderable. However, surely all orderable
> types are equality-comparable!
http://en.wikipedia.org/wiki/Lattice_(order)
> Therefore, if opCmp is defined but
> opEquals isn't, then we should autogenerate opEquals to be the same as
> a.opCmp(b)==0.
It's a sensible decision, but I'm not so sure.
Andrei
More information about the Digitalmars-d
mailing list