DIP32: Uniform tuple syntax

Simen Kjærås simen.kjaras at gmail.com
Fri Mar 29 06:17:02 PDT 2013


On Fri, 29 Mar 2013 13:56:08 +0100, bearophile <bearophileHUGS at lycos.com>  
wrote:

> One handy tuple syntax in Haskell allows you to name both the items of a  
> tuple and it whole:
>
>
> void foo(t2@{int a, string b}) {
>     // here a and b are tuple items and t2 is the whole tuple.
> }
> auto t1@{x, y} = {10, "hi"};
> foo(t1);

I suggest instead this syntax:

auto {x, y} t1 = {10, "hi"};

It's closer to regular D syntax.


> foreach (Float; {float, double, real}) { ... }
>
> I think you meant to put a variable name there.

foreach (Type; {float, double, real}) { ... }

See it now?


> - - - - - - - - - - - -
>
> {c, $} = tup;   // Rewritten as: c = tup[0];
>
> $ is used for array lengths, so it's not so good to overload it to mean  
> "don't care" too.
>
> Alternative syntaxes:
>
> {c, $_} = tup;
> {c, @} = tup;
> {c, @_} = tup;
> {c, $$} = tup;
> {c, {}} = tup;
> {c, {_}} = tup;
> {c, $~} = tup;
> {c, @~= tup;
> etc.

... has been introduced to match zero or more elements for pattern matching
already. I see no reason not to use ... for this.

-- 
Simen


More information about the Digitalmars-d mailing list