Sent from my iPad

> On May 29, 2016, at 5:43 PM, Charles Srstka via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On May 29, 2016, at 5:16 PM, Austin Zheng <austinzh...@gmail.com> wrote:
>> 
>> I think the problem here is that P == P is true, but P : P is not (a 
>> protocol does not conform to itself).
> 
> But if you have a variable, parameter, etc. typed as P, that’s *not* the 
> protocol, since protocols aren’t concrete entities. What you have there, by 
> definition, is something that conforms to P. Similarly, something like [P] is 
> just a collection of things, perhaps of various types, which all have the 
> common feature that they conform to P.

You have an existential value of type P.  It is a well known frustration in 
Swift that the existential type corresponding to a protocol does not conform to 
the protocol.  This has been discussed off and on at different times.  

There are a couple of reasons this is the case.  IIRC in some cases it actually 
isn't possible for the existential to conform to the protocol in a sound way.  
And even when it is possible, I believe it has been said that it is more 
difficult to implement than you might think.  Hopefully the situation will 
improve in the future but I'm not aware of any specific plans at the moment.

> 
>> I think there was some discussion about it on the original "Completing 
>> Generics" thread from March. I'd probably ask on the swift-users list why P 
>> can't be made to conform to P, and then put together a proposal if there's 
>> no good reason.
> 
> Will do.
> 
> Charles
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to