
Rob Stewart <stewart@sig.com> writes:
Florian's notion of these operators, derived from Perl, is that they are not symmetrical. To make expressions like 1 and 2 symmetrical, I've taken to swapping arguments depending upon the combination of types, which means I'm forcing the symmetry. Maybe I'm just off the mark and they should be allowed to be asymmetrical.
I think that's right. These things reflect the syntax and semantics of english, not of math anymore. Besides, >, >=,<=, < aren't symmetric ;^)
Reasoning over the result of using none_of() with a user-defined predicate gets quite difficult when compared against an all_of() or other junction/multivalue objects. Doing so against a single value is much easier.
Yes but the documentation should say what combinations are potentially dangerous.
Dangerous? Inefficient or useless, maybe, but dangerous?
I think "evaluate" is better than "is_true_that:"
if (evaluate(all_of(a), _1 >= _2, one_of(b))) ...
Yuck.
Perhaps we should consider a functional style:
if (compare(all_of(a), one_of(b), _1 >= _2))
or
if (compare(all_of(a), _1 >= _2, one_of(b)))
IMO that's a *lot* harder to read than all_of(a) >= one_of(b) I'm not sure if I'm going to like the latter style in the long run, but so far it's looking pretty sweet. -- Dave Abrahams Boost Consulting www.boost-consulting.com