简单来说,什么是currying,为什么这种方法比传统的编程范式更受青睐?

时间:2015-06-11 14:27:38

标签: scala functional-programming currying

我很难通过网络上的几个来源理解currying。还有更直观的currying例子吗?

此外,它与传统编程范式相比有哪些优势?是否可以通过非功能性编程来实现?

1 个答案:

答案 0 :(得分:3)

想象一个具有多个参数add(a,b) = a + b的函数。此功能添加两个数字。现在想象一下,在某些上下文中,你需要一个只需要一个参数的函数,你想要一个添加了5的函数。该函数可能如下所示:adds5(x) = 5 + x

现在,在某些情况下,你需要一个增加5的函数,在其他上下文中增加10个。所以你可以编写一个返回a的函数,而不是编写与其他常量一样的函数。向第一个函数添加作为参数的常量的函数:adder(a) = (b) = a + b

函数addadder看起来非常相似。 add接受2个参数并添加它们,adder返回一个函数,该参数将adder的参数添加到其自己的参数中。

add转换为adder称为currying。

由于这与函数有很大的关系,我会说当有currying时,那就是函数式编程。您可以使用任何编程语言进行函数式编程 - 毕竟,所有图灵完整语言都是等同的;-),但在支持函数作为一等公民的函数式语言中,它更容易。