
----- Mensaje original ----- De: David Bergman <David.Bergman@bergmangupta.com> Fecha: Lunes, Julio 24, 2006 9:11 pm Asunto: Re: [boost] [mpl] Metafunction terminology - revival?
Joaquin wrote:
[snip]
I've reread the referred page, and all I can take it to define is: a lambda expression is a metafunction class or a placeholder expression. Whether this is what the authors actually *meant* is debatable, of course.
What I think it literally means is that a lambda expression is either a metafunction class or a placeholder expression, much like a woman is either nice or mean. This does NOT imply that all nice people are women ;-) So, I think even the literal reading of the refered sentence(s) leaves room for non-lambda-expressive metafunction classes...
"A woman is either nice or mean" is not a definition of the term "woman", yet the referred page stands for a definition of "lambda expression", so an "if and only if" implication is assumed. OK, Abrahams and Gurtovoy's book's chapter 3 has been webpublished at artima.com and there you can read the following: ( http://www.artima.com/cppsource/metafunctions2.html ) "We'll refer to metafunction classes like add_pointer_f and placeholder expressions like boost::add_pointer<_1> as lambda expressions." (add_pointer_f is a metafunction class defined a couple of paragraphs before.) Does this convince you? Anyway, we're not discussing Aristotle or Descartes, on the contrary we enjoy the presence of MPL authors amongst us and can always ask them directly. [This does not detract from the fact that your choice of terminology is probably superior, I'm only nitpicking you for the joy of discussion. I hope you're taking it similarly :) ]
[...]
<pedantic digression> Just to play devil's advocate, what gives a lambda expression its essence, at least in mathematical lambda calculus, is not the presence of place holders, but the ability to apply to actual arguments,
No, that is not true, actually, since that essence of applicability is best captured by the notion of "function." A lambda expression is a special type of function (or, rather, lambda expressions are isomorphic to a set of functions...)
I'd say lambda calculus captures aplicability better than the cartesian definition of function as a special subset of a product set AxB, but well, it's hard to argue this objectively. [...]
/David
Joaquín M López Muñoz Telefónica, Investigación y Desarrollo