
23 Nov
2008
23 Nov
'08
12:34 a.m.
On 11/22/08 07:59, Joe Gottman wrote: > George van Venrooij wrote: >> Hello everyone, >> >> I recently created a MPL-based run-time algorithm named "for_all" >> which you can find at the following location: >> >> http://tinyurl.com/5a9d9d >> >> It is based on the "for_each" algorithm. The main difference is that >> it traverses a sequence of sequences and constructs new sequences that >> are then passed to a functor. Read the article for more information. [snip] > 1) The name isn't informative. How about something like > mpl::all_combinations to better say what the function actually does? > > 2) You should mention in the documentation that the number of > sequences returned can get very big very fast. For instance, given six > input sequences with 10 elements each, this function will return 1 > million sequences of 6 elements each. From Joe's comment, it sounds like for_all is the same as the answer to exercise 7-8 of: http://www.boostpro.com/mplbook/ So, a better name, IMHO, would be something with cross_product in the name, or maybe cartesian_product or outer_product. IIRC, outer_product is what apl calls that operation. Anyway, I've posted an answer to exercise 7-8 at: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?CPPTM_Answers_-_Exercise_7-8 Currently, I'm learning haskell, and they have a way, using a list monad, to do the same, AFAICT. See: http://www.muitovar.com/monad/moncow.xhtml#list There, the function is called cross. IIRC, FC++ or someone connected with FC++: http://sourceforge.net/projects/fcpp/ has a monad template. It would be interesting to try and use a c++ list monad to solve the problem. I'll probably try it eventually, but maybe someone else would like to try. Who knows, a monad solution may have some advantage.