Dicebot:
I understand but this is something that can be pretty hard to
fit into D semantics/grammar and I am not sold that it is worth
the push on its own.
I'd like a good tuple syntax in D.
What is the difference with this then?
void foo(int a, int b, int c)
{
// ...
}
auto t = tuple(10, 20, 30);
foo(t.expand);
The difference is that your experience with tuples will be less
good. One difference can be seen here. Given an array of tuples
(here I am using a shorter syntax):
auto arr = [@{1, 2}, @(3, 4)]
You can't do this:
void foo(int a, int b, int c) {...}
auto result = arr.map!foo;
And you need:
auto result = arr.map!(t => foo(t.expand));
Or:
auto result = arr.map!(t => foo(t[]));
While you can do this:
void foo(in @(int a, int b, int c}) {...}
auto result = arr.map!foo;
The point of having a tuple syntax is not to expand the set of
programs you can write with C language. It's of having a handy
syntax to perform certain very common operations with more than
one type.
I also suggest you to take a look at the DIP.
Bye,
bearophile