[swift-evolution] [Completing Generics] Arbitrary requirements in protocols
Dave Abrahams
dabrahams at apple.com
Mon Apr 11 13:56:49 CDT 2016
on Mon Apr 11 2016, Jacob Bandes-Storch <swift-evolution at swift.org> wrote:
> Doug wrote this in the Completing Generics manifesto, under "Minor extensions":
>
> *Arbitrary requirements in protocols
>
> Currently, a new protocol can inherit from other protocols, introduce new
> associated types, and add new conformance constraints to associated types
> (by redeclaring an associated type from an inherited protocol). However, one
> cannot express more general constraints. Building on the example from
> “Recursive protocol constraints”, we really want the element type of a
> Sequence’s SubSequence to be the same as the element type of the Sequence,
> e.g.,
>
> protocol Sequence {
> associatedtype Iterator : IteratorProtocol
> …
> associatedtype SubSequence : Sequence where SubSequence.Iterator.Element ==
> Iterator.Element
> }
>
> +1.
>
> To make it into Swift 3, would this feature require a proposal of its
> own?
It could be part of another proposal, but it should be in a proposal.
Whether or not it can still make Swift 3, I am unsure.
> How feasible would it be to implement on top of the current system?
I can't answer that, but if you want to work on this I'd suggest
starting with the implementation. In this case, the proposal is the
easy part.
--
Dave
More information about the swift-evolution
mailing list