[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