我这样做是否不正确,或者这是一般柯里化(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
最佳答案
您调用了 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));
关于javascript - 柯里化(Currying)导致基函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49216849/