Числа Черча могут быть выражены в C++0x (C++11?), используя новые лямбда-части языка, используя что-то вроде это:
typedef function<int(int)> F;
static const F id = [=](int x) { return x; };
function<F(F)> church(unsigned int i)
{
if(i == 0) {
return [=] (F f) { return id; };
}
return [=] (F f) {
F tmp = [=](int x) { return f(church(i-1)(f)(x)); };
return tmp;
};
}
Можно ли выразить цифры Чёрча с помощью Boost.Bind и C++03? Если да, то как?