[swift-evolution] [Draft] Allow multiple conformances to the same protocol

Антон Жилин antonyzhilin at gmail.com
Sun Jun 12 15:22:07 CDT 2016


Copy of link to the proposal:
https://github.com/Anton3/swift-evolution/blob/generic-protocols/proposals/NNNN-generic-protocols.md

Inline:

2016-06-12 21:51 GMT+03:00 Dan Appel <dan.appel00 at gmail.com>:

> Awesome that you guys started this! I've been meaning to pitch it for a
> while. Couple notes:
>
> - in the motivation, you're conforming to SequenceType while defining a
> From protocol (just a typo I think)
>

Fixed


> - the proposal should mention Brent's comments since it doesn't have a
> rebuttal to the "unlikely" status generic protocols were given in the
> generic manifesto. Brent does a great job of doing that
>

Added a bold link


> - is there a way for generic protocols to still have associated types? I
> think that could have some interesting use cases.
>

Generic protocols can contain associated types, but no type can conform to
multiple instances of such protocols.

Actually, this limitation is more restricting than it seems, because if our
protocol conforms to a protocol with associated type requirements, then we
still can't conform to our protocol multiple times.


> Dan Appel
>
> On Sun, Jun 12, 2016 at 11:28 AM Антон Жилин <swift-evolution at swift.org>
> wrote:
>
>> Yes, everything that works on generic types should work for generic
>> protocols. I'll add that.
>>
>> What won't work is declaring that  MyComparable : Comparable  iff  T ==
>> Self. The same won't work for current non-generic protocols as well.
>> Although that feature is highly requested, it is discussed in a separate
>> proposal.
>>
>> - Anton
>>
>> 2016-06-12 21:16 GMT+03:00 Xiaodi Wu <xiaodi.wu at gmail.com>:
>>
>>>
>>>
>>> On Sun, Jun 12, 2016 at 8:01 AM, Антон Жилин <swift-evolution at swift.org>
>>> wrote:
>>>
>>>> I've prepared a proper draft:
>>>>
>>>>
>>>> https://github.com/Anton3/swift-evolution/blob/generic-protocols/proposals/NNNN-generic-protocols.md
>>>>
>>>>
>>> When you propose this:
>>> Syntax in protocol extensions
>>>
>>> protocol MyComparable<T> {
>>>   func < (left: Self, right: T)
>>> }extension MyComparable {
>>>   func > (left: T, right: Self) {
>>>     return right < left
>>>   }
>>> }
>>>
>>>
>>> Would it be possible for me to write something like:
>>>
>>> ```
>>> extension MyComparable<T : SignedNumber> { ... }
>>> ```
>>>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
> --
> Dan Appel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160612/22dcb4ab/attachment.html>


More information about the swift-evolution mailing list