On Monday, 10 February 2014 at 03:14:31 UTC, Jonathan Dunlap
wrote:
(disclaimer: I'm new around here)
Is it possible to cycle backwards? If not, what's the best
approach?
Example of some ideal "takeBack" function:
data = cycle([1,2,3][])
take(data, 4) is [1,2,3,1][]
takeBack(data, 4) would be [1,3,2,1][]
Thoughts?
We've had a discussion about this recently with Andrej Mitrovic.
The question was basically: Should Cycle (keeping in mind it is
an infinite range) be bidirectional? And if yes, what should be
the first last?
There is fundamentally nothing preventing us from making Cycle
bidirection (though maybe as opt-in CycleBidirectional, due to
extra costs). We'd just need a use case, and specifications I
guess. For example:
auto s = cycle([1, 2, 3]);
auto last = cycle.back;
What's last's value? I think it should be 3. If we can agree and
file an ER, it can be done.