就是柯里化反过来,原本的函数f的类型是A1 => (A2 => B),经过反柯里化: g = Function.uncurried(f) 那么g的类型是(A1, A2) => B 这是函数式编程里面常见的概念。 在使用f和g的时候,有如下区别: (f (x1)) (x2) 等价于 g (x1, x2)
返回类型 (A1, A2)=> B, 说明返回类型是一个函数,接收A1、A2类型的参数,返回值类型为B; 参数 f:(A1)=>(A2)=>B,表明f是一个有两个参数列表的函数,每个参数列表分别有一个参数。第一个参数列表接收类型为A1的参数,第二个参数列表接受类型为A2的参数,返回值类型为B ...= (x1, x2) => f(x1)(x2) 等号右边整体是一个匿名函数,作为返回值返回。这个匿名函数参数为x1,x2,函数体为f(x1)(x2)。因为前面已经说明了uncurried函数的返回值类型,也就是说明了这个函数的参数类型和返回值类型,所以可以参数列表类型可以省略。
就是柯里化反过来,原本的函数f的类型是
A1 => (A2 => B)
,经过反柯里化:那么g的类型是(A1, A2) => B
这是函数式编程里面常见的概念。
在使用f和g的时候,有如下区别:
(f (x1)) (x2)
等价于g (x1, x2)