> On Jan 2, 2016, at 9:44 PM, Austin Zheng via swift-evolution 
> <[email protected]> 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 
> <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 <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
>  
> <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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to