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
