August 07, 2011 [phobos] Transversal/Transposed | ||||
---|---|---|---|---|
| ||||
Last year, when I was cleaning up/debugging std.range, one issue I never got around to addressing was Transposed. Currently it's completely undocumented even though it could be highly useful. To get it up to snuff, I think I need to convert FrontTransversal into EndTransversal. EndTransversal would decide at runtime via an enum whether to iterate the front or back of the range of ranges: auto ror = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; auto frontTrans = endTransversal(ror, TransversalType.front); assert(equal(frontTrans, [1, 4, 7])); auto backTrans = endTransversal(ror, TransversalType.back); assert(equal(backTrans, [3, 6, 9])); This would come at a small performance cost, since every call to EndTransversal.front would need to decide whether to fetch the front or back of each range. It would not be possible to decide this at compile time because Transposed.back and Transposed.front need to return the same type. Since this is going to require significant effort, is everyone on board with it before I get busy? |
Copyright © 1999-2021 by the D Language Foundation