Hi Jacob, I really like the idea of constraining associated types. However I think there could be a much more general solution to this problem by introducing "Partially constrained protocols".
I've already created a (almost finished) proposal for another thread which hasn't continued. It attacks the same issue as "Arbitrary requirements in protocols": https://github.com/Qbyte248/swift-evolution/blob/master/proposals/0000-Partially%20constrained%20protocols%20and%20generic%20types.md Unfortunately I have (almost) no time to discuss this in depth or completely finish the proposal. So feel free to copy my proposal add yourself as coauthor and start a new thread. Or just take it as an inspiration :) Kind regards - Maximilian PS: Looking forward to a new generics model :) > Am 11.04.2016 um 10:01 schrieb Jacob Bandes-Storch via swift-evolution > <[email protected]>: > > 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? > How feasible would it be to implement on top of the current system? > > Jacob > _______________________________________________ > 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
