foreach/iota countdown

Timon Gehr timon.gehr at gmx.ch
Mon Feb 17 12:03:32 PST 2014


On 02/17/2014 08:33 PM, simendsjo wrote:
> On Monday, 17 February 2014 at 19:30:38 UTC, Timon Gehr wrote:
>> On 02/17/2014 08:22 PM, simendsjo wrote:
>>> Should the following two uses be a compile-time error?
>>>   foreach(i; 10 .. 0) // Never executes
>>>
>>>   foreach(i; iota(10, 0)) // .. neither does this
>>>
>>> I would like the second to either be a compile-time error or
>>> automagically use a negative step.
>>>
>>> So we need to use a negative step in iota() or use a for loop
>>>   foreach(i; iota(10, 0, -1)) // as expected
>>
>> The parameters can be runtime values. Auto-magically using a negative
>> step would hence be a bad idea.
>
> Why would it be a bad idea?

The step direction shouldn't randomly change.

> And I don't see where the runtime aspect comes in.

It was just to illustrate the issue more clearly. Eg. it means one and 
the same iota expression can sometimes iterate in one direction and in 
the other direction at other times. That's simply not useful behaviour.

> There would be a very small setup performance hit when using runtime
> variables for choosing the step direction.



More information about the Digitalmars-d-learn mailing list