Is there any interest in fixing opEquals and opCmp in the spirit(*) of [1]?

Translating the basic idea into the D world would mean:
 - Drop opEquals
 - Encode the type of comparison in the return type of opCmp
 - Adapt lowering

Why?
- Simplicity: there is always only one function that needs to be implemented; - Consistency: implementation at a single place makes it more difficult to get it wrong; - Expressivity: through the return type implementors can unambiguously specify the properties of comparison relations (Equivalence, Equality, PartialOrdering, LinearOrdering, etc.) and algorithms can more precisely specify their requirements (e.g. general sorting requires a weak ordering whereas topological sorting requires a preorder, only);

[1] Herb Sutter: Consistent comparison, P0515 R0, 2017-02-05
URL http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0515r0.pdf

(*) Some aspects of the proposal are unsound but those can be easily fixed.

Reply via email to