
On 08/01/05 03:41, Alex Mendes da Costa wrote:
Quick update: I currently have a partial (but working) implementation of the cross_iterator. I hope to have a preliminary submission ready some time this week.
Alex
On 7/26/05, David Abrahams <dave@boost-consulting.com> wrote:
Alex Mendes da Costa <alexmdac@gmail.com> writes:
The iterator that I am proposing would provide the sequence (1,10), (2,10), (1,20), (2,20). Oh, you want a cross-product iterator. Interesting idea.
A haskell list comprehension is what you need, AFAICT. FC++ can do this, if I'm correctly interpreting pages 16,19-20 of: http://www-static.cc.gatech.edu/~yannis/fc++/fcpp-lambda.pdf For example, p. 19 uses (in haskell syntax): [x+y|x <- [1,2,3], y <- [2,3], x<y] to produce: [3,4,5] (as shown on p. 16), and the corresponding FC++: compM<ListM> [ X %plus% Y | X <= list_with(1,2,3) , Y <= list_with(2,3) , guard[X %less% Y] ] is shown just below the haskell code on p. 19. In your case, I guess the X %plus% Y would maybe be replaced with some sort of mpl sequence, e.g. mpl::list<X,Y>, and for more than 2 domans, I'd guess you'd have to have: mpl::list<D1,D2,...,Dn> Also, maybe FC++ could be adapted to make this easier. Hmm.. maybe mpl::fold could be combined with compM to do this for any number of domains.