On Thu, 06 Nov 2014 16:57:48 +0000, Marc Schütz wrote: > On Thursday, 6 November 2014 at 15:53:27 UTC, Jack Applegame wrote: >> I have rectangular forward range of forward ranges (not arrays): >> [ >> [a11, a12, ... a1N], >> [a21, a22, ... a2N], >> ... >> [aM1, aM2, ... aMN] >> ] >> >> I need lazy forward range: >> [ >> a11 + a21 + ... aM1, >> a12 + a22 + ... aM2, >> ... >> a1N + a2N + ... aMN >> ] >> Range of sum elements of every columns; >> >> M, N - runtime values; >> >> Is there a way to do this using only Phobos algorithms and range >> functions? > > Untested: > > import std.algorithm: map, sum; > auto rangeOfSums = rectangularRange.map!(r => r.sum);
This would sum along the wrong dimension. I think the correct solution will make use of std.range.frontTraversal, but it will be a bit more complex due to needing to sum every column. std.range.traversal would make it easy, but it requires random access.