我有以下使用currying的代码段:
let multiply x y = x * y
let double = multiply 2
let ten = double 5
我理解上面的代码,因为我记得这段代码:
Currying将n个参数的单个函数转换为n 函数只有一个参数
然后我遇到以下代码:
let double2 z = multiply 2 z
double2 5
我根本不理解这段代码。为什么double2可以成为一个函数?
答案 0 :(得分:1)
后一个例子中发生的事情真的没什么特别的。
你基本上可以把它读作:
使用一个参数
double2
定义一个函数z
,
定义为multiply 2 z
有些人可能会将此称为“currying”或“部分功能评估”,但实际上这里发生的一切就是你定义了一个在函数体中使用另一个函数的函数。
答案 1 :(得分:1)
let double2 z = multiply 2 z
// ^ here you define a parameter
这会把它变成一个功能。