On Fri, 14 Feb 2014 12:29:49 -0000, Jakob Ovrum <jakobov...@gmail.com> wrote:

On Friday, 14 February 2014 at 12:10:51 UTC, Regan Heath wrote:
FWIW I disagree. I think it's immediately and intuitively obvious what 'i' should be when you're foreaching over X items taken from another range, even if you do not know take returns another range. Compare it to calling a function on a range and foreaching on the result, you would intuitively and immediately expect 'i' to relate to the result, not the input.

R

How should it behave on ranges without length, such as infinite ranges?

In exactly the same way. It just counts up until you break out of the foreach, or the 'i' value wraps around. In fact the behaviour I want is so trivial I think it could be provided by foreach itself, for iterations of anything. In which case whether 'i' was conceptually an "index" or simply a "count" would depend on whether the range passed to foreach (after all skip, take, etc) was itself indexable.

Also, `enumerate` has the advantage of the `start` parameter, which usefulness is demonstrated in `enumerate`'s example as well as in an additional example in the bug report.

Sure, if you need more functionality reach for enumerate. We can have both; sensible default behaviour AND enumerate for more complicated cases. In my case, enumerate w/ start wouldn't have helped (my file was blocks of 6 lines, where I wanted to skip lines 1, 3, and 6 *of each block*)

I'm not yet sure whether I think it should be implemented at the language or library level, but I think the library approach has some advantages.

Certainly, for the more complex usage. But I reckon we want both enumerate and a simple language solution which would do what I've been trying to describe.

R

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

Reply via email to