Super-dee-duper D features

janderson askme at me.com
Tue Feb 13 22:27:55 PST 2007


Andrei Alexandrescu (See Website For Email) wrote:
> renoX wrote:
>> Andrei Alexandrescu (See Website For Email) a écrit :
>>> James Dennett wrote:
>>>> C++, of course, has std::for_each(e.begin(), e.end(), do_x);
>>>> in its library (though that's weaker than it could be because
>>>> of lack of support for convenient anonymous functions/lambdas).
>>>>
>>>> C++0x is very likely to have for(v: e).  It's implemented
>>>> in ConceptGCC already. Java already has essentially that,
>>>> as does C#.  This really doesn't set D apart (but at least
>>>> D isn't falling behind here).
>>>
>>> BTW, D might soon have simultaneous iteration that will blow away all 
>>> conventional languages:
>>>
>>> foreach (i ; coll1) (j ; coll2)
>>> {
>>>   ... use i and j ...
>>> }
>>> continue foreach (i)
>>> {
>>>   ... coll2 finished; use i ...
>>> }
>>> continue foreach (j)
>>> {
>>>   ... coll1 finished; use j ...
>>> }
>>>
>>> Best languages out there are at best ho-hum when it comes about 
>>> iterating through simultaneous streams. Most lose their elegant 
>>> iteration statement entirely and come with something that looks like 
>>> an old hooker early in the morning.
>>
>> At first, I really didn't like the 'continue foreach', then afterwards 
>> I got used to it, I wonder if this is really such a requested feature 
>> though, what's wrong with the good old 'for' or 'while' for the 
>> complex case?
> 
> Absolutely nothing's wrong. The same argument, however, could be 
> formulated to render foreach redundant. We have for, don't we.
> 
> The thing is foreach is terse and elegant and has a functional flavor 
> that gives it safety and power that for doesn't have. It's only natural 
> to ask oneself why all of these advantages must go away in a blink just 
> because you want to iterate two things simultaneously.
> 
> 
> Andrei

I think its about how much this feature will be used.  This one seems 
like it could be useful but its pretty close to borderline-"feature for 
feature sake" for me.  There are probably a lot of other features that 
could be more useful then this one.

-Joel



More information about the Digitalmars-d mailing list