Curry 对赋值感到困惑
Currying confusing about assignment
我有以下使用柯里化的代码片段:
let multiply x y = x * y
let double = multiply 2
let ten = double 5
上面的代码我看懂了,因为我记得这段代码:
Currying is converting a single function of n arguments into n
functions with a single argument each
然后我遇到了下面的代码:
let double2 z = multiply 2 z
double2 5
我完全看不懂这段代码。为什么double2可以是函数?
后一个示例中发生的事情真的没什么特别的。
你基本上可以读作:
define a function double2
with one argument z
,
which is defined as multiply 2 z
有些人可能将其称为 "currying" 或 "partial function evaluation" 但实际上这里发生的所有事情是您定义了一个在其函数体中使用另一个函数的函数。
let double2 z = multiply 2 z
// ^ here you define a parameter
这会把它变成一个函数。
我有以下使用柯里化的代码片段:
let multiply x y = x * y
let double = multiply 2
let ten = double 5
上面的代码我看懂了,因为我记得这段代码:
Currying is converting a single function of n arguments into n functions with a single argument each
然后我遇到了下面的代码:
let double2 z = multiply 2 z
double2 5
我完全看不懂这段代码。为什么double2可以是函数?
后一个示例中发生的事情真的没什么特别的。
你基本上可以读作:
define a function
double2
with one argumentz
,
which is defined asmultiply 2 z
有些人可能将其称为 "currying" 或 "partial function evaluation" 但实际上这里发生的所有事情是您定义了一个在其函数体中使用另一个函数的函数。
let double2 z = multiply 2 z
// ^ here you define a parameter
这会把它变成一个函数。