使用C ++进行纯函数式编程

时间:2014-09-16 00:08:46

标签: c++ functional-programming

我相信如果程序员打算这样做,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;
}

0 个答案:

没有答案