Sent from my iPad

On May 23, 2016, at 9:52 PM, Brent Royal-Gordon via swift-evolution 
<[email protected]> wrote:

>> One initial bit of feedback -  I believe if you have existential types, I 
>> believe you can define Sequence Element directly, rather than with a type 
>> alias. e.g.
>> 
>> protocol Sequence {
>>  associatedtype Element
>>  associatedtype Iterator: any<IteratorProtocol where 
>> IteratorProtocol.Element==Element> 
>>  associatedtype SubSequence: any<Sequence where Sequence.Element == Element>
>>  …
>> }
> 
> That's not really the same thing. Any<IteratorProtocol> is an existential, 
> not a protocol. It's basically an automatically-generated version of our 
> current `AnyIterator<T>` type (though with some additional flexibility). It 
> can't appear on the right side of a `:`, any more than AnyIterator could.

After this proposal you should be able to use these existentials anywhere you 
can place a constraint, so it would work.  You can do this with the protocol 
composition operator today and the future existential is just an extension of 
that capability.

> 
> What *would* work is allowing `where` clauses on associated types:
> 
>> protocol Sequence {
>>  associatedtype Element
>>  associatedtype Iterator: IteratorProtocol where Iterator.Element==Element
>>  associatedtype SubSequence: Sequence where SubSequence.Element == Element
>>  …
>> }
> 
> I believe this is part of the generics manifesto.
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to