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.

Reply via email to