Agreed, any proposal would come with an accompanying PR. Since the API itself 
is pretty straightforward, I don't think this will put any undue burden on the 
reviewers. 

Austin

> On Jan 3, 2016, at 12:09 AM, Dave Abrahams <dabrah...@apple.com> wrote:
> 
> 
>> On Jan 2, 2016, at 9:44 PM, Austin Zheng via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> Hello all,
>> 
>> Currently there exist at least four 'type-erased' sequence/collection types: 
>> AnySequence, AnyForwardCollection, AnyBidirectionalCollection, and 
>> AnyRandomAccessCollection.
>> 
>> The three Any*Collection types can be conceptually arranged into a 'ladder', 
>> in which collections can be constructed unconditionally from collection 
>> types above themselves, and conditionally from collection types below 
>> themselves. I've put together a little ASCII image of this here: 
>> (https://gist.github.com/austinzheng/829425242bef1573b668).
>> 
>> Note that AnySequence doesn't currently fit into this ladder: Any*Collection 
>> instances can't easily be constructed from AnySequences. SR-119 
>> (https://bugs.swift.org/browse/SR-119) aims to change that. As per that 
>> ticket, I propose that we add three promotion APIs, sketched out as 
>> following:
>> 
>> extension AnyForwardCollection {
>>     init?<Element>(_: AnySequence< Element>)
>> }
>> 
>> extension AnyBidirectionalCollection {
>>     init?<Element>(_: AnySequence< Element>)
>> }
>> 
>> extension AnyRandomAccessCollection {
>>     init?<Element>(_: AnySequence< Element>)
>> }
>> 
>> Like their Any*Collection --> Any*Collection antecedents, these initializers 
>> construct a new Any*Collection out of an existing AnySequence, but only if 
>> the underlying sequence is compatible, and without copying the underlying 
>> sequence.
>> 
>> I'll also have to examine SE-0014 
>> (https://github.com/apple/swift-evolution/blob/master/proposals/0014-constrained-AnySequence.md)
>>  more closely to see if it has any effects on this proposal.
>> 
>> I plan on submitting a formal proposal at some point (probably by the end of 
>> the coming week), but first wish to solicit feedback, opinions, concerns, 
>> etc. Thanks for your time.
> 
> My main concern is whether you can implement it, and do so efficiently.  I 
> don’t have a particular reason to think you can’t, but it seems simple enough 
> to check, so IMO such a proposal should come with an implementation.
> 
> -Dave
> 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to