Currying使基本功能不起作用?

时间:2018-03-11 05:08:49

标签: javascript functional-programming

我这样做不正确,或者这是一般的currying问题吗?

在Javascript中使用此示例。



let addNormal = (x,y) => x+y;
let addCurry = x => y => x+y;

let increment = addCurry(1);

/// Below returns 4.
alert(increment(3));

/// Below returns 4.
alert(addNormal(1,3));

/// Below returns y => x+y
alert(addCurry(1,3));




我的意思是函数编程看起来很棒,但如果基函数没有按预期工作,这似乎是一种反模式。上面的例子来自hackernoon博客。 Partial Application of Functions

1 个答案:

答案 0 :(得分:3)

您致电addCurry错误。

致电addCurry(1)(3)而非addCurry(1,3)。为什么?因为

addCurry = x => y => x + y;

相同
function addCurry(x) {
  return function(y) {
    return x + y;
  }
}



let addNormal = (x,y) => x+y;
let addCurry = x => y => x+y;

let increment = addCurry(1);

/// Below returns 4.
alert(increment(3));

/// Below returns 4.
alert(addNormal(1,3));

/// Below returns y => x+y
alert(addCurry(1)(3));