Performance penalty for using ranges

bearophile bearophileHUGS at lycos.com
Sun Aug 25 14:01:53 PDT 2013


Joseph Rushton Wakeling:

> It's slightly annoying that one can't readily get immutability 
> to play nice with more general iterations than i .. j.
>
> For example if you consider the loop,
>
>     for (i = 10; i > 0; --i) { ... }

Thankfully foreach_reverse was not deprecated:

void main() {
     import std.stdio;

     for (auto i = 10; i > 0; --i)
         write(i, " ");
     writeln;

     foreach_reverse (immutable i; 1 .. 11)
         write(i, " ");
     writeln;
}


> [* Hijacking of discussion: a while back I think I floated the 
> idea of generalizing iota() with closed/open boundary 
> conditions similar to those found in std.random.uniform; so 
> e.g. you could do iota!"[]"(0, 10) and the upper bound would be 
> included in the values returned.  Would be useful for cases 
> like these.]

Yes, it's a kind of necessary enhancement:
http://d.puremagic.com/issues/show_bug.cgi?id=10466

Bye,
bearophile


More information about the Digitalmars-d mailing list