DIP32: Uniform tuple syntax

bearophile bearophileHUGS at lycos.com
Fri Mar 29 06:00:32 PDT 2013


Andrej Mitrovic:

> <quote>
> And, this syntax (currently it is not enough documented)
> foreach (x, y; zip([1,2,3], ["a","b","c"])) {}
> </quote>
>
> Well that kinda sucks, I was just getting used to this 
> syntax..But for
> me it it was too magical to begin with, so I have no real 
> complaints.

I have recently asked to remove that from the language, because 
it's not flexible and it has problems:
http://d.puremagic.com/issues/show_bug.cgi?id=9817


> It feels like D and Perl had
> lots of booze and made it to the mile-high club, and one of 
> them got pregnant.

Perl is hermaphrodite, after all.


> <quote>
> if (auto {1, y} = tup) {
>     // If the first element of tup (tup[0]) is equal to 1,
>     // y captures the second element of tup (tup[1]).
> }
> </quote>
>
> That looks like black magic to me.
>
> <quote>
> int x = 1;
> if (auto {$x, y} = coord) { ... }
> // If the first element of coord is equal to 1 (== x), 'then'
> statement wil be evaluated.
> </quote>
>
> I really don't think we need this magic..
> ...
> I just thinks this adds way too many features at once. I'd 
> argue we
> should take it slow and start with some basic ability to define 
> and
> unpack tuples, and then gradually add these other features *if*
> they're really wanted.

I kind of agree. In my answer to Kenji I have suggested to split 
the DIP into two DIPs, Stage1 and Stage2 and move four features 
in the second Stage. This will have several advantages, for their 
design, implementation and learning.


> The new meaning of $ and $var and literals in if statements and 
> "...",
> is just too much for me to take.

In my answer to Kenji I have suggested possible alternatives.

Bye,
bearophile


More information about the Digitalmars-d mailing list