【发布时间】:2017-10-02 16:05:45
【问题描述】:
我一直在学习使用 C++ 进行函数式编程的基础知识。我正在尝试创建一个函数f(a)(b)(c),它将返回a + b + c。我成功实现了函数f(a)(b),它返回a + b。这是它的代码:
std::function<double(double)> plus2(double a){
return[a](double b){return a + b; };
}
我只是不知道如何实现函数f(a)(b)(c),正如我之前所说的应该返回a + b + c。
【问题讨论】:
-
请问您究竟为什么要尝试在 c++ 中进行函数式编程(而不是任何固有的函数式语言)?
-
不确定您是否可以仅使用
f(a)(b)(c)。如果你想使用f(a)(b)(c)(),你应该可以很容易地让它工作。 -
@BenSteffan C++ 在一些主流函数式语言出现之前就提供了函数对象。迭代器和算法只是从 C++ 转移到函数式语言的一个特性。它已经支持 lambdas。它已经允许将函数作为参数传递给迭代器。等等等等等等
-
@am.rez 那是lambda-expression's capture list。
-
请注意,您可以使用
auto作为函数的返回类型,并避免std::function的类型擦除成本。
标签: c++ c++11 functional-programming currying std-function