Super-dee-duper D features
renoX
renosky at free.fr
Tue Feb 13 22:57:41 PST 2007
Andrei Alexandrescu (See Website For Email) a écrit :
> renoX wrote:
>> Andrei Alexandrescu (See Website For Email) a écrit :
>>> 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.
I wouldn't call 'functional flavored' something with such an 'hidden
state' stored in i, but that's just me.
And I have a question for the safety: what is supposed to happen if the
programmer modifies coll1 between the foreach(i ; coll1) and continue
foreach?
Adding or removing value in the collection before the continue foreach?
Just being curious, I would imagine that this is just forbidden.
renoX
> 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
More information about the Digitalmars-d
mailing list