I'd be happy to put something together, unless someone else wants to take it on.
Doug, I also owe you a PR adding a minor amendment to one of the accepted proposals. I'll get to that this week. Austin On Sun, Nov 13, 2016 at 10:13 PM, Douglas Gregor via swift-evolution < [email protected]> wrote: > Recursive protocol constraints is one small-looking feature that could > greatly improve the standard library. The generics manifesto describes it > this way: > > "Currently, an associated type cannot be required to conform to its > enclosing protocol (or any protocol that inherits that protocol). For > example, in the standard library SubSequence type of a Sequence should > itself be a Sequence: > > protocol Sequence { > associatedtype Iterator : IteratorProtocol > ... > associatedtype SubSequence : Sequence // currently ill-formed, but should > be possible} > > The compiler currently rejects this protocol, which is unfortunate: it > effectively pushes the SubSequence-must-be-a-Sequence requirement into > every consumer of SubSequence, and does not communicate the intent of > this abstraction well." > > <https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md#nested-generics>It's > actually slightly worse than the above implies: the standard library has a > pile of underscore-prefixed protocols (e.g., _Sequence) specifically to > dodge this restriction. They are ugly, and we want them to go away. Many of > these places are marked with an ABI FIXME in the standard library sources. > > Would someone like to write up a proposal for this feature? The syntax and > basic semantics are pretty direct, but a proposal should also capture the > expected effects on the standard library, particularly when combined with > where clauses on associated types. > > I also have a nagging feeling that we will need some form of restrictions > on this feature for implementation reasons, e.g., because some recursive > constraints will form unsolvable systems. > > For reference, we've already been implementing this feature. Some > information about the compiler internal issues is captured at: > > https://gist.github.com/DougGregor/e7c4e7bb4465d6f5fa2b59be72dbdba6 > > - Doug > > > > Sent from my iPhone > > _______________________________________________ > 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
