List comprehensions: Difference between revisions

Content added Content deleted
(Updates example with macros to compile with Nim version 1.4.)
Line 643: Line 643:
=={{header|D}}==
=={{header|D}}==
D doesn't have list comprehensions. One implementation:
D doesn't have list comprehensions. One implementation:
<lang d>import std.stdio, std.typetuple, std.range;
<lang d>import std.stdio, std.meta, std.range;


TA[] select(TA, TI1, TC1, TI2, TC2, TI3, TC3, TP)
TA[] select(TA, TI1, TC1, TI2, TC2, TI3, TC3, TP)
Line 652: Line 652:
lazy TP where) {
lazy TP where) {
Appender!(TA[]) result;
Appender!(TA[]) result;
auto iters = TypeTuple!(iter1, iter2, iter3);
auto iters = AliasSeq!(iter1, iter2, iter3);


foreach (el1; items1) {
foreach (el1; items1) {
Line 666: Line 666:
}
}


TypeTuple!(iter1, iter2, iter3) = iters;
AliasSeq!(iter1, iter2, iter3) = iters;
return result.data;
return result.data;
}
}
Line 676: Line 676:
iota(y, n + 1), x*x + y*y == z*z);
iota(y, n + 1), x*x + y*y == z*z);
writeln(r);
writeln(r);
}
}</lang>
}</lang>
{{out}}
{{out}}