List comprehensions: Difference between revisions
Content added Content deleted
(Updates example with macros to compile with Nim version 1.4.) |
m (→{{header|D}}) |
||
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. |
<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 = |
auto iters = AliasSeq!(iter1, iter2, iter3); |
||
foreach (el1; items1) { |
foreach (el1; items1) { |
||
Line 666: | Line 666: | ||
} |
} |
||
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}} |