javascript - 柯里化(Currying)导致基函数不起作用?

标签 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

最佳答案

您调用了 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/

相关文章:

javascript - 简单的 jQuery addClass() 似乎不起作用

javascript - 有关从 JavaScript 中的闭包返回对象字面量的详细信息

javascript - 如何添加导航下拉菜单?

javascript - 使用 AJAX 处理不同类型的 PHP 响应

haskell - 纯函数式语言如何处理基于索引的算法?

javascript - 使用映射和过滤器扩展语法

javascript - Express - 如何在不使用查询字符串参数的情况下将数据传递到模型

functional-programming - 如何中断、退出撰写或管道?

c# - 功能等同于重载

java - 执行 "max"的功能方法(使用递归/不使用可变变量)