柯里化柯里化(currying)是与λ演算相关的重要概念。通过柯里化,可以把有多个输入的函数转换成只有一个输入的函数,从而可以在λ演算中来表示。柯里化的名称来源于数学家 Haskell Curry。Haskell Curry 是一位传奇性的人物,以他的名字命令了 3 种编程语言,Haskell、Brook 和 Curry。柯里化是把有多个输入参数的求值过程,转换成多个只包含一个参数的函数的求值过程。对于 的函数 f(a, b, c),在柯里化之后转换成函数 g,则对应的调用方式是 g(a)(b)(c)。函数 (x, y) -> x + y 经过柯里化之后的结果是 x -> (y -> x + y)。
柯里化与部分函数存在一定的关联,但两者是有区别的。部分函数的求值结果永远是实际的函数调用结果;而柯里化函数的求值结果则可能是另外一个函数。以 的部分函数 fa 为例,每次调用 fa 时都必须提供剩余的 2 个参数。求值的结果都是具体的值;而调用柯里化之后的函数 g(a) 得到的是另外的一个函数。只有通过递归的方式依次求值之后,才能得到最终的结果。 |