
Eric Niebler wrote:
Dave,
Unless I hear otherwise, I'll resolve the technical issues with Proto you raised as follows:
Keep in mind, we had a bad sleeping night with the baby...
1) The aliasing issue (proto::_left as a typedef for proto::transform::left) will be resolved by eliminating the "transform" namespace and everything in it.
I'm sorry, I don't recall having any aliasing issue. Can you relate this to something specific I wrote?
2) The "functional" namespace will be renamed "functor".
That rubs me the wrong way, but it may not be worth fighting the tide. The "official view of the C++ community" as I understand it, is that ever calling function objects "functors" was a big mistake because that term already has another meaning in category theory which as you know spills over into type theory and thus CS, which is even expressed as a language construct in ML. That said, people don't seem to have stopped saying "functor" when they mean "function object," and I doubt *I* can stop them. I guess the question is whether Boost will contribute to that terminology problem or help solve it.
3) "visitor" will be renamed "data"
Thanx.
4) I don't intend to rename the "call" transform or the "function" tag/metafunction. (If I renamed "call" to "apply" like I suggested, then I should also rename "is_callable" to "is_applicable" or some such, which is awful, IMO.)
Yep.
5) You can override an expression's domain with "proto::as_expr<Domain>(expr)".
"You" meaning "end users of libraries built with proto?"
This gives a way to mix expressions from different domains in the same expression.
I take it as_expr already exists?
If you object to any of these resolutions, holler.
You'll only hear a mild squawk from me, about "functor." -- Dave Abrahams Boost Consulting http://boost-consulting.com