Feature request: extending comma operator's functionality

ixid nuaccount at gmail.com
Fri Oct 5 15:35:15 PDT 2012


On Friday, 5 October 2012 at 00:39:40 UTC, timotheecour wrote:
> Is the plan to deprecate comma operator for chaining 
> expressions?
> I would love to see more syntactic sugar to support tuples, and 
> comma operator would be the best fit for that purpose.
>
> eg:
> ----
> import std.typecons;
> auto fun(){
>     return tuple(1,"abc");
>     //1) ideally, we should be able to write:
>     //return (1,"abc");
>     //with same semantics (and no need to import std.typecons)
> }
>
> //at the call site: currently:
> auto t=fun();
> auto a=t[0];
> auto b=t[1];
>
> //2) ideally, we should be able to write:
> auto (a,b,c)=fun();
>
> //3) or even:
> (a,b,c)=fun();
> ----
>
> Will it be difficult to implement 2)? (by far the most 
> important of 1,2,3)
> Is 1) and 3) a good idea?

Surely the ideal is what you're written but also allowing the 
omission of parens where it's unambiguous? Just to keep this idea 
in people's minds:

return 1, "abc";

That would seem like the ideal to me as would:

double, string fun(double, double n) {
     return n[0] * n[1], "abc";
}

Should these uses require parens like this?

(double, string) fun((double, double) n) {
     return (n[0] * n[1], "abc");
}

As discussed before the parens are unavoidable for assignment 
given the need to avoid breaking vast quantities of code.


More information about the Digitalmars-d mailing list