Sent from my iPhone

> On Nov 13, 2016, at 4:03 PM, Austin Zheng <[email protected]> wrote:
> 
> I'd be happy to put something together, unless someone else wants to take it 
> on.

Great, thanks!

> 
> Doug, I also owe you a PR adding a minor amendment to one of the accepted 
> proposals. I'll get to that this week.

Sounds great. 

  - Doug

> 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."
>> 
>> 
>> 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

Reply via email to