我是在错误地执行此操作,还是总体上存在问题?

以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

最佳答案

您称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));

09-11 20:48