RFC on range design for D2
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Sep 10 05:33:58 PDT 2008
Don wrote:
> Andrei Alexandrescu wrote:
>> In most slice-based D programming, using bare pointers is not
>> necessary. Could then there be a way to use _only_ ranges and
>> eliminate iterators altogether? A container/range design would be much
>> simpler than one also exposing iterators.
>
>> http://ssli.ee.washington.edu/~aalexand/d/tmp/std_range.html
>
> I like this a lot. You've mentioned safety and simplicity, but it also
> seems to be a more powerful abstraction than STL-style iterators.
>
> Consider a depth-first-search over a tree. You have a start point, an
> end point, and some internal state (in this case, some kind of stack).
> The interesting thing is that the required internal state _may depend on
> the values of the start & end points_.
>
> STL iterators don't model this very well, since they require a symmetry
> between iterators. Which creates the difficulty of where the internal
> state should be stored.
> You can get away with independent iterators when the relationship
> between start and end is, "if you perform ++ on start enough times, you
> reach end". A simple array-style range formalizes this relationship, but
> the range concept also allows more complex relationships to be expressed.
>
> So I think the value of this approach improves for more complicated
> iterators than the simple ones used by the STL.
That's a great insight. Hadn't thought of it!
Andrei
More information about the Digitalmars-d-announce
mailing list