Shout out to D at cppcon, when talkign about ranges.
Kagamin via Digitalmars-d
digitalmars-d at puremagic.com
Thu Oct 8 12:29:07 PDT 2015
On Thursday, 8 October 2015 at 14:46:07 UTC, John Colvin wrote:
>> Another way is to provide a reverse range of previously popped
>> items - this can be seen as iterator or not, more like a range
>> with history rather than an undoable input range, so maybe the
>> getter should be `history`.
>
> my question is: How, in practice, does one take a bidirectional
> range and make one of these new things? I foresee some
> difficulty, but perhaps I'm just not being imaginative enough.
It should be probably possible to undo the history range too, but
it would be future, so it looks like there can be a better
interface: beforeFront returns a normal bidirectional range of
items before current front, afterBack returns a normal
bidirectional range of items after back, so r.beforeFront.back is
an item right before current front. This makes it more symmetric,
and properties return ranges of the same type as the source
range, but I don't know how to name such a range :) A range with
shadows? Those ranges can be seen as shadows (before and after).
Yes D's bidirectional range provides less guarantees than C++
bidirectional iterator, but you can build it on a random access
range that provides more guarantees than bidirectional iterator,
or you can provide a range with shadows, that provides as much
guarantees as C++ bidirectional iterator, no less, no more.
More information about the Digitalmars-d
mailing list