我相信如果程序员打算这样做,c ++中的新功能允许使用这种巨大的语言进行纯函数式编程。我在下面尝试了一个,根本没有变量,仅基于递归循环,纯函数。我想知道用c ++做这件事是否有一些实际的好处。好吧,c ++比任何其他函数式语言都要快,并且通过这种方式,虽然它对程序员来说可能非常糟糕,但它直接降低了函数式编程范例的所有优点和安全性。或者当前的c ++编译器可能过于愚蠢而无法有效地优化这些代码?
#include <iostream>
#include <functional>
#include <cstdint>
int main() {
std::function<const uint64_t (const uint64_t)> factorial = [&](const uint64_t n)
-> const uint64_t {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
};
{
enum { NUM_ITERATION = 20 };
std::function<void (const unsigned)> loop = [&](const unsigned n) -> void {
if (n == 0) {
return;
}
std::cout << factorial(NUM_ITERATION - n) << '\n';
loop(n - 1);
};
loop(NUM_ITERATION);
}
return 0;
}