On Wednesday, 17 January 2018 at 06:44:21 UTC, Timon Gehr wrote:
It uses tuples because it uses zip. The code does not compile
today, because the lambda I'm passing to "map" has two
parameters:
auto a = [1, 2, 4, 7, 2];
auto b = [3, 5, 3, 2, 4];
// auto c = zip(a, b).map!((x, y) => x + y); // error
auto c = zip(a, b).map!(t => t[0] + t[1]); // ok
We could make lambdas consistent with proposal 5:
// Proposal 5: Unpacking function arguments
void foo((int x, int y), int z){
writeln(x, " ", y, " ", z);
}
// lambda takes one tuple of two elements
alias f = ((x, y)) => x + y;
auto c = zip(a, b).map!f; // ok
Is there a better example as to why a tuple decaying to function
arguments is worth having vs the language complication?