[swift-evolution] [Completing Generics] Arbitrary requirements in protocols

Dave Abrahams dabrahams at apple.com
Mon Apr 11 17:16:49 CDT 2016


on Mon Apr 11 2016, Jacob Bandes-Storch <jtbandes-AT-gmail.com> wrote:

> On Mon, Apr 11, 2016 at 11:56 AM, Dave Abrahams via swift-evolution
> <swift-evolution at swift.org> wrote:
>
>     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.
>
> I was mostly wondering if anyone inside the team has already thought about how
> to do this, or perhaps even started working on it. If it's in the pipeline, it
> might affect our discussion about "allValues" for enums (which I'm going to send
> an email about soon).

AFAIK, nobody has started it yet.

-- 
Dave


More information about the swift-evolution mailing list