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

Jacob Bandes-Storch jtbandes at gmail.com
Mon Apr 11 03:01:44 CDT 2016

Doug wrote this in the Completing Generics manifesto, under "Minor

> **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
>     }


To make it into Swift 3, would this feature require a proposal of its own?
How feasible would it be to implement on top of the current system?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160411/d7000391/attachment.html>

More information about the swift-evolution mailing list