c++语法中的lambda,一直没明白这个东西的最大意义是什么。很多人说是为了写匿名函数。不过我觉得这个理由太过牵强了。最近忽然听说这个东西可以方便地实现函数式编程里面的柯理化,于是乎迫不及待地实验了一把。
#include<iostream>
#include<stdio.h>
using namespace std;
int add0(int a,int b, int c)
{
return a*b*c;
}
auto add1(int a)
{
auto temp1=[=](int b)
{
auto temp2=[=](int c)
{
return a*b*c;
};
return temp2;
};
return temp1;
}
__attribute__((optimize("O0")))
int main(int argc,char* argv[])
{
printf("%d\n",add0(3,4,5));
printf("%d\n",add1(3)(4)(5));
return 0;
}
首先:在函数式编程的理论研究中,研究的对象都是单参函数。如何解决实际工程中的多参函数,于是柯理化的理论就横空出世。