on Tue Oct 18 2016, Max Moiseev <firstname.lastname@example.org> wrote:
> Hi Louis,
> I believe the difference is due to the performance guarantees. One can
> only efficiently implement `popFirst` and `removeFirst` on slices,
> where it’s just a matter of index manipulation.
Well, and on deques, doubly-linked lists, and circular buffers.
> Removing the first element of a Collection is potentially an O(n)
> operation. Using `popFirst` in a loop in some algorithm would result
> in a quadratic complexity.
> So the reason is: we only provide `popFirst` in a context where it is
> guaranteed to be O(1). Same applies to `popLast`, actually.. I think.
swift-evolution mailing list