Super-dee-duper D features
Bill Baxter
dnewsgroup at billbaxter.com
Tue Feb 13 14:54:45 PST 2007
Andrei Alexandrescu (See Website For Email) wrote:
> Bill Baxter wrote:
>> janderson wrote:
>>> Andrei Alexandrescu (See Website For Email) wrote:
>>>> 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 ...
>>>> }
>>>>
>>>> Andrei
>>>
>>> Maybe its a bit to late here however this syntax seems very special
>>> case. Can you explain why its necessary and how we would use it.
>>> How would we do this currently (without meta programming)?
>>>
>>
>> Yeh, I don't get it either. How would that help me implement merge()
>> from merge sort for instance?
>
> Merge bumps the iteration in both collections conditionally. The form
> above bumps the iteration in the two collections unconditionally, until
> one is finished; then it continues with the other until that is finished.
Yes, I get that. My initial impression, though, was that iterating in
lock step is just one particular case, and it seems kind of special case
to warrant a new syntax. It still doesn't get rid of the need for
general iterators to implement more complicated things like merge sort.
But maybe it does cover the majority of cases. I guess it's basically
like 'for x,y in izip(list1,list2)' in Python. But in python that's a
library function, not a bit of language syntax.
--bb
More information about the Digitalmars-d
mailing list