返回目录 【2.4.2柯里化】
1.什么是柯里化
丘奇的λ演算要求函数为单参数,如数学函数f(x,y) =2x+3y,其λ演算写为λx. λy. ( 2x+3y)。而在编程实践中,更多地使用多元函数,函数定义的一个参数列表,表示它拥有多个参数。
柯里化/currying,指将多元函数转化为多个一元函数的连续定义。柯里化主要体现为理论意义,它说明人们只需要研究一元函数,其所有结论和规则就能够运用到多元函数。
在函数式语言如Scheme中,多元函数和多个一元函数可以毫无阻碍地转化,只需要将多元函数的lambda的参数修改为一个即可。
;;;currying.rkt
;;; 多元函数。
(define F
(lambda ( x y)
(+ x y)
)
)
;;; 多个一元函数的连续定义
(define curryingF
(lambda (x)
(lambda ( y)
(+ x y) )))
;;; 函数应用
(F 2 3) ;;; → 5
((curryingF 2) 3) ;;; → 5
例程中,F是一个二元函数,其返回x+ y的数值;而一元函数curryingF,它内部定义了一个嵌套函数并作为返回值。
请注意curryingF的函数应用。在 ((curryingF 2) 3)的计算过程中,先计算(curryingF 2) 并返回一个匿名函数,然后该匿名函数应用于实参3,计算得2