Super-dee-duper D features

Andrei Alexandrescu (See Website For Email) SeeWebsiteForEmail at erdani.org
Wed Feb 14 13:17:26 PST 2007


Bill Baxter wrote:
> Andrei Alexandrescu (See Website For Email) wrote:
>> Bill Baxter wrote:
>>> Andrei Alexandrescu (See Website For Email) wrote:
>>>> Bill Baxter wrote:
>>>>> Andrei Alexandrescu (See Website For Email) wrote:
>>>>>
>>>>>
>>>>>> I'm actually mildly surprised. Lately there was some talk around 
>>>>>> here about supporting the day-to-day programmers and so on. I find 
>>>>>> looping a very day-to-day thing, and looping over 2+ things at 
>>>>>> least a few-days-to-few-days thing. There is a need for parallel 
>>>>>> iteration, if nothing else shown by the existence of a library 
>>>>>> that addresses exactly that - to the extent possible in a library 
>>>>>> that's not in the position to control syntax, scoping, and 
>>>>>> visibility. I was sure people will be on this one like white on 
>>>>>> rice. But Bjarne Stroustrup was right: nobody knows what most 
>>>>>> programmers do :o).
>>>>>
>>>>> Python and Ruby are hardly considered to be obtuse languages, or 
>>>>> unfriendly to Joe coder, but both get by just fine without special 
>>>>> case syntax for iterating over multiple collections, or for 
>>>>> iterating in reverse.
>>>>>    for x,y izip(foo,bar):
>>>>>        do stuff
>>>>>
>>>>>    for x reversed(foo):
>>>>>        do stuff
>>>>>
>>>>>    for x,y izip(reversed(foo),bar):
>>>>>        do that with your proposal!
>>>>
>>>> foreach (x ; reverse_view(foo)) (y ; bar)
>>>>   probably I could!
>>>
>>> foreach (x,y ; transpose_view(reverse_view(foo),bar)
>>>   then why not this too?!
>>
>> Because it doesn't keep bound variables together with the data. Perl 
>> has a way of initializing multiple variables that is unnerving:
>>
>> my ($a, $b, $c) = (e1, e2, e3);
>>
>> The long-distance relationships make it so irritating when ek are more 
>> than a couple of characters, I often give up and write:
>>
>> my $a = e1;
>> my $b = e2;
>> my $c = e3;
>>
>> even though I try to use vertical space sparingly.
> 
> You're of course welcome to your opinion, but multiple assignment exists 
> in many languages.  So you're saying they're all wrong to have such a 
> feature?

No. It's good to have multiple assignments; it's annoying that Perl 
prevents the option of grouping initializers with the data if I so wanted:

my $a = e1, $b = e2, $c = e3;

I was just opining that

foreach (a ; e1) (a2 ; e2) {}

is clearer than:

foreach (a ; b) (e1 ; e2) {}


Andrei




More information about the Digitalmars-d mailing list