Case Range Statement ..

Bill Baxter wbaxter at gmail.com
Mon Jul 13 05:51:49 PDT 2009


On Mon, Jul 13, 2009 at 2:59 AM, Don<nospam at nospam.com> wrote:
> Michiel Helvensteijn wrote:
>>
>> Andrei Alexandrescu wrote:
>>
>>> void main()
>>> {
>>>     foreach_reverse (i; 0.7 .. 100.7)
>>>     {
>>>         write(i, " ");
>>>     }
>>> }
>>>
>>> The last number printed is -0.3.
>>
>> A question if I may.
>>
>> Why does D allow iteration over an interval of floats? A floating point
>> number has no direct successor or predecessor. Any such interval would
>> contain zero, one or infinite elements.
>>
>> Given the -0.3, I'm assuming you increase/decrease by 1.0 each iteration.
>> Is
>> this useful enough to be the standard behavior?
>>
>
> It's a petri dish. Perfect breeding ground for bugs.
>
> real BIG = 2.0 /(real.epsilon);
>
> foreach(i; BIG .. BIG + 2) {
>  ...
> }
>
> Infinite loop, since BIG + 1 == BIG.


So why do Matlab and NumPy both have such constructs (with optional stepsize)?

--bb



More information about the Digitalmars-d mailing list