[swift-evolution] Why doesn't Collection's SubSequence conform to Collection?

Max Moiseev moiseev at apple.com
Mon Feb 13 16:02:58 CST 2017


Because it would be recursive. which is not supported, I believe.


protocol Foo {
    associatedtype Bar : Foo
}

Playground execution failed: error: MyPlayground.playground:2:20: error: type may not reference itself as a requirement
    associatedtype Bar : Foo
                   ^

> On Feb 13, 2017, at 1:42 PM, Charles Srstka via swift-evolution <swift-evolution at swift.org> wrote:
> 
> The following comment accompanies the declaration of the SubSequence associated type in the Collection protocol:
> 
> /// A sequence that represents a contiguous subrange of the collection's
> /// elements.
> ///
> /// This associated type appears as a requirement in the `Sequence`
> /// protocol, but it is restated here with stricter constraints. In a
> /// collection, the subsequence should also conform to `Collection`.
> associatedtype SubSequence : IndexableBase, Sequence = Slice<Self>
> 
> The comments clearly state that the subsequence should conform to Collection, however, it is not declared as such. Why is this?
> 
> Charles
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170213/0d62d4e3/attachment.html>


More information about the swift-evolution mailing list