Philippe Sigaud <[email protected]> wrote:
Simen, could you please have a look at my dranges project?
http://www.dsource.org/projects/dranges/
Look at the algorithm and range sections, you'll find plenty of code that
try to tackle this.
In particular combinations() in algorithm2, and also tensorialProduct()
in
rangeofranges
combinations is a higher-order range that takes any number of forward
ranges
and output their combinations as tuples.
tensorialProduct does the same, but creates 'topology' : the combination
of
three ranges is a range, whereas the tensorial product of three (linear)
ranges is a range of ranges of ranges:
tensorialProduct([0,1],[2,3])
->
[[(0,2),(0,3)],
[(1,2),(1,3)]]
(where (x,y) indicates a tuple)
Indeed. I just had a quick look at the traits2 module last time you
linked it. This does seem to cover all bases. I have to say I'm impressed!
--
Simen