> On Apr 11, 2016, at 1:01 AM, Jacob Bandes-Storch via swift-evolution 
> <swift-evolution@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?

Yes. Also, be wary that the syntax above potentially conflicts with the syntax 
discussed as "moving the where clauses”:

        
http://thread.gmane.org/gmane.comp.lang.swift.evolution/13886/focus=14058


> How feasible would it be to implement on top of the current system?

Definitely! The archetype builder would need to learn to check these extra 
where clauses, and one would need to be sure that the constraint solver is 
picking them up as well.

        - Doug


_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to