On Mon, Jul 13, 2009 at 2:59 AM, Don<[email protected]> 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
