Boost logo

Boost :

Subject: Re: [boost] Boost.Test updates in trunk: need for (mini) review?
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-10-27 19:22:23

on Fri Oct 26 2012, Rob Stewart <> wrote:

> On Oct 26, 2012, at 8:41 AM, Ian Emmons <iemmons_at_[hidden]> wrote:
>> On Oct 19, 2012, at 11:03 PM, Gennadiy Rozenal wrote:
>> First, __please__ pay attention to documentation. I know you have
>> said that documentation isn't something you like/want to do, but a
>> library without good documentation is useful only to the writer. In
>> other words, it is (in a general purpose case like this) simply a
>> waste of time.
> He didn't suggest that there would be no documentation; only that he
> hadn't done it and would like help.

But if history is any guide, it might not get done if that help doesn't
materialize. I don't think it's out-of-line for Ian to ask Gennadiy to
be responsible for it.

>>> d) join - dataset constructed by joining 2 datasets of the same type
>>> int a[] = {1,2,3};
>>> int b[] = {7,8,9};
>>> data::make(a) + data::make(b) - dataset with 6 integer values
>> This should be called "concatenation", not "joining". People with a
>> database background will expect something called "join" to increase
>> the arity of the result.
> Be careful about generalizing from the specific.

Maybe so, but I agree that one should use the already accepted terms for
operations. "Concatenate" is the appropriate word here.

>>> e) zip - dataset constructed by zipping 2 datasets of the same size, but not
>>> necessarily the same type
>>> This dataset has an arity which is sum of argument dataset arities.
>>> int a[] = {1,2,3};
>>> char* b[] = {"qwe", "asd", "zxc"};
>>> data::make(a) ^ data::make(b)
>>> dataset with 3 samples which are pairs of int and char*.
>> Calling this "zipping" is odd (at least to me). Makes it sound like
>> a compression facility. Perhaps "tupling" would be better.
> Tupling sounds very odd to me. "Zipping" is well established for
> merging of this sort.

Yes, "zip" is a well-established concept.

>> I also think the choice of operator here is not ideal. How does the
>> xor operator evoke any notion of this operation?
> The circumflex has two tails that merge at the top.

:-) by that measure,


would be a good choice too. That said, I have no problem with the circumflex.

>>> f) grid - dataset constructed by "multiplying" 2 datasets of the same different
>>> sizes and types type
>>> This dataset has an arity which is sum of argument dataset arities.
>>> int a[] = {1,2,3};
>>> char* b[] = {"qwe", "asd"};
>>> double c[] = {1.1, 2.2};
>>> data::make(a) * data::make(b) * data::make(c)
>>> dataset with 12 samples which are tuples of int and char* and double.
>> For people with a database background, "cross product" is the
>> obvious name for this. Calling it anything else is silly.
> Not only is "cross product" wrong, but you should not call the OP for
> having a different idea than you.

>From what's written here, it's hard to know whether "cross product" is
wrong or not, but given the number of samples cited, I'm inclined to
believe it's probably right. What result other than the cross product
do you think that means?

Dave Abrahams
BoostPro Computing                  Software Development        Training             Clang/LLVM/EDG Compilers  C++  Boost

Boost list run by bdawes at, gregod at, cpdaniel at, john at