DMD 0.170 release (foreach_reverse)
Marcin Kuszczak
aarti at interia.pl
Thu Oct 26 05:21:08 PDT 2006
Completely agree with below !
vote++ to remove foreach_reverse
Marcin Kuszczak
Aarti_pl
------------------------
Bill Baxter wrote:
> Walter Bright wrote:
>
>> The saving grace about foreach_reverse is:
>>
>> 1) Only a small (5% ?) of loops will be reverse, so you won't see it or
>> need to type it that often.
>
> A good reason why it doesn't deserve its own keyword.
>
>> 2) It's very clear what it does.
>
> And 'foreach(i; list.reversed)' is pretty clear as well.
>
>> 3) It isn't likely to conflict with other names.
>
> Because it's a 15 letter keyword with an underscore! While we're at it,
> let's make a for_i_equals_one_to_ten keyword, too. I loop from 1 to 10
> a lot in my code (well, not that much really <5%, but at least it's a
> name that's not likely to conflict with other names).
>
>> 4) It is analogous with C++'s reverse_iterator names.
>
> But those aren't keywords. And even more analogous is STL's
> std::for_each in the standard header 'algorithm'.
> http://www.sgi.com/tech/stl/for_each.html
> Note that STL does not have a std::for_each_reverse. You get that
> behavior, as you might expect, by using a reverse iterator instead of a
> forward iterator as the argument.
>
>
> And in another message Walter Bright wrote:
>
> > foreach_reverse was pretty trivial to implement. All the machinery
> was > already there.
>
> That should be setting off warning bells in your head, too. "The
> machinery is already there" is just another way of saying "this feature
> is mostly redundant". The foreach machinery already does the job.
> foreach_reverse is more or less just a copy-paste of that code with all
> references to "opApply" replaced with "opApplyReverse". So of course
> it's trivial to implement.
>
> I'll repeat a line from the "zen of python" one more time, at the risk
> of being told that 'D isn't Python', because I think it's true
> regardless of the language:
>
> "Special cases aren't special enough to break the rules."
>
> As I understand it, the only real reason for foreach_reverse, when it
> comes down to it, is because of a strong desire to have a special case
> fast reverse iteration for arrays and strings. But it really should be
> possible to hide that special case from the user and just detect some
> particular property e.g. "some_array.reversed" in a foreach statement.
> It may be a little more work (and maybe you just punt on the
> optimization till 2.0), but in the long run, the language and all it's
> users will benefit from removing that special case.
>
> --bb
--
Regards
Marcin Kuszczak
(Aarti_pl)
More information about the Digitalmars-d-announce
mailing list