Denis Koroskin wrote:
On Mon, 18 May 2009 04:28:24 +0400, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Consider:

     foreach (x; 1.0 .. 4.1) writeln(x);
     foreach_reverse (x; 1.0 .. 4.1) writeln(x);

This sucks. foreach with interval for floating-point types should be disallowed.


Andrei

It's useless, unless a step is specified (btw, integer iteration would benefit from having a step, too)

I don't mind if the whole .. feature is removed. It could be implemented in a library, with an optional step:

foreach (x; range(0, 100)) { // step is 1 implicitly
   // ...
}

foreach (x; range(0, 100, 2)) { // explicit step
   // ...
}

This feels more functional, although slightly longer to type.


It's actually there already: std.range.iota. Incidentally it does the right thing with floats because it iterates by the recurrence formula iter(i) = lowest + i * step (where i is an integer). But there's an unrelated bugzilla about it.


Andrei

Reply via email to