I'm interested, but I'm by no means claiming I'll have enough time to drive any of the discussion/proposal/implementation. :-(
Jacob On Tue, Apr 12, 2016 at 3:07 PM, Dave Abrahams via swift-evolution < [email protected]> wrote: > > on Tue Apr 12 2016, Douglas Gregor <[email protected]> wrote: > > > On Apr 11, 2016, at 1:01 AM, Jacob Bandes-Storch via swift-evolution > > <[email protected]> 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. > > By the way, having this would enable us to massively simplify the > standard library, and potentially lots of user-written generic code, > too. So I'm very excited that someone's interested! > > -- > Dave > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
