[swift-evolution] [Draft][Proposal] Formalized Ordering

Daniel Duan daniel at duan.org
Fri Jul 22 18:55:26 CDT 2016


> On Jul 22, 2016, at 3:00 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
> on Fri Jul 22 2016, Daniel Duan <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> 
>>> On Jul 22, 2016, at 11:05 AM, Dave Abrahams via swift-evolution
>>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> 
>>> on Thu Jul 21 2016, Duan
>> 
>>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>> <mailto:swift-evolution at swift.org <mailto:swift-evolution at swift.org>>>
>>> wrote:
>>> 
>>>> Great proposal. I want to second that areSame may mislead user to
>>>> think this is about identity.
>>>> 
>>>> I like areEquivalent() but there may be better names.
>>> 
>>> It really *is* about identity as I posted in a previous message.  But
>>> that doesn't change the fact that areEquivalent might be a better name.
>>> It's one of the things we considered; it just seemed long for no real
>>> benefit.
>>> 
>> 
>> If the addresses of the arguments aren’t being used, then we don’t consider
>> them part of their *identity*. I can follow this logic. My fear is most users
>> won’t make this leap on their own and get the same initial impression as I did.
>> It's entirely possible this fear is unfounded. Some educated bikesheding
>> wouldn't hurt here IMO :)
> 
> Well, it's still a very real question whether we ought to have the
> additional API surface implied by areSame, or wether we should collapse
> it with ===.
> 

To spell this out (because I had to think about it for a second): === will be derived from
<=>, but also becomes default implementation for ==, which remains open for customization.

I like this idea. If we keep === as a separate thing, now users have 3 “opportunities” to define
equality. The must be few, if any, use cases for this.

Would love to see if anyone on the list can give us an example. Otherwise we should make
areSame === again™!

>> 
>>>> Daniel Duan
>>>> Sent from my iPhone
>>>> 
>>>>> On Jul 21, 2016, at 6:32 PM, Robert Widmann via swift-evolution
>>>>> <swift-evolution at swift.org> wrote:
>>>>> 
>>>>> 
>>>>>> On Jul 21, 2016, at 6:19 PM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
>>>>>> 
>>>>>> This is nice. Is `areSame()` being proposed because static `==` is
>>>>>> the status quo and you're trying to make the point that `==` in the
>>>>>> future need not guarantee the same semantics?
>>>>> 
>>>>> Yep!  Equivalence and equality are strictly very different things.
>>>>> 
>>>>>> 
>>>>>> Nit: I think the more common term in stdlib would be
>>>>>> `areEquivalent()`. Do you think `same` in that context (independent
>>>>>> of the word "ordering") might erroneously suggest identity?
>>>>> 
>>>>> There is room for improvement here.  Keep ‘em coming.
>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Thu, Jul 21, 2016 at 8:11 PM, Robert Widmann via
>>>>>>> swift-evolution
>>>>>>> <swift-evolution at swift.org> wrote:
>>>>>>> Hello Swift Community,
>>>>>>> 
>>>>>>> Harlan Haskins, Jaden Geller, and I have been working on a
>>>>>>> proposal to clean up the semantics of ordering relations in the
>>>>>>> standard library.  We have a draft that you can get as a gist.
>>>>>>> Any feedback you might have about this proposal helps - though
>>>>>>> please keeps your comments on Swift-Evolution and not on the gist.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> 
>>>>>>> ~Robert Widmann
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> swift-evolution mailing list
>>>>>>> swift-evolution at swift.org
>>>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution at swift.org
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> 
>>> 
>>> -- 
>>> Dave
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> <mailto:swift-evolution at swift.org <mailto:swift-evolution at swift.org>>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
> 
> -- 
> Dave
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160722/7093b020/attachment-0001.html>


More information about the swift-evolution mailing list