[swift-evolution] [RFC] New collections model: collections advance indices
Dave Abrahams
dabrahams at apple.com
Tue Mar 8 11:21:19 CST 2016
on Tue Mar 08 2016, Антон Жилин <swift-evolution at swift.org> wrote:
> In the RFC, I see that indices only requires `next`.
In the RFC, there's no Index protocol at all; Indices
are required to be Comparable.
> I like this scheme a lot, it's very altruistic, like in C++. Get,
> increment, end check - nothing more is required to work with
> iterators.
FWIW, building a correct C++ iterator is so boilerplate-heavy and
occasionally subtle that people use libraries such as
http://www.boost.org/doc/libs/release/libs/iterator/doc/index.html
> I like extracting everything optional to Collection hierarchy, and don't
> like adding Equatable, Comparable or Hashable constraints on
> iterators.
You can barely write any interesting generic algorithms at all without
the moral equivalent of Equatable indices.
> If you need Hashable in a specific scope, declare it as a generic
> constraint. I didnt really read the whole RFC, so I could have
> misunderstood something.
I don't support making indices Hashable at this time; IMO that's part of
a much larger discussion that we need to have about regular types and
implicitly-generated conformances. Comparable is arguable either way,
but we are proposing to require it in part to be able to test the
semantics of a valid Range.
--
-Dave
More information about the swift-evolution
mailing list