Boost logo

Boost :

From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2006-07-24 14:55:21


----- Mensaje original -----
De: David Bergman <David.Bergman_at_[hidden]>
Fecha: Lunes, Julio 24, 2006 8:08 pm
Asunto: Re: [boost] [mpl] Metafunction terminology - revival?

> Ok, two interpretations:
>
> 1. (Mine) What the MPL documentation calls a "lambda expression"
> (as of the refered page
> [http://boost.org/libs/mpl/doc/refmanual/lambda-expression.html]) is
> either "placeholder expression" or meta function classes *generated*
> by the application of mpl::lambda, i.e., *just* the meta function
> classes generated in that specific way.
>
> 2. (Yours) All metafunction classes are "lambda expressions."

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.

> I am admittedly biased, but I think my interpretation is the most
> sound one ;-) The reason for that is that I would hesitate to call
> an explicitly defined metafunction class, such as
>
> struct MyMeta { template<class T> apply { typedef int
type; } };
>
> a lambda expression.

Personally, I favor your interpretation of what lambda
expressions and metafunction classes should be defined to be,
I was only sticking to the reference.

<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, and this ability can be coded with mechanisms
other than placeholders. For instance, in combinatorial
calculus (http://en.wikipedia.org/wiki/Combinatory_logic),
all lambda expressions can be given equivalent formulations
using only the combinators S and K, thus effectively avoiding
the use of placeholders altogether. It could be an interesting
investigation project to determine whether combinatorial
methods can be modelled into the metaprogramming framework
of C++ just the way lambda expressions have been.
</pedantic digression>

[...]
> /David

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk