javascript - 广义咖喱 - Javascript
问题描述
在阅读一篇关于在 Javascript 中实现通用 curry 的文章时,我偶然发现了这段代码。
function curry(fn) {
return (...xs) => {
if (xs.length === 0) {
throw Error('EMPTY INVOCATION');
}
if (xs.length >= fn.length) {
return fn(...xs);
}
return curry(fn.bind(null, ...xs));
};
}
我无法理解说明的部分内容
我们创建一个 fn 的副本,它绑定了前 k 个参数(部分应用),并将其作为下一个 fn 传递给 curry,其数量减少了 N - k。
在随后的调用中,arity 是如何fn
减少到 Nk 的?具有 k 个参数的绑定函数应该具有 k 的元数对吗?
解决方案
绑定函数返回一个带有部分应用参数的函数,因此f(a, b, c)
变为f.bind(null, a).bind(null, b)(c)
.
推荐阅读
- c# - 为什么我的 webrequest 行需要更新?(错误(426)需要升级)
- node.js - npm install dtrace-provider 错误:未找到 make
- flutter - Is there a way to add rounded corners to a DropdownButton menu item list in Flutter?
- android - 无法将 java.lang.String 类型的对象转换为 com.thesis.joinerapp.Model.Joins 类型
- html - 背景图像未出现在 div 中
- ios - 何时重新创建 SwiftUI 中的工作表?
- linux - bash 中的三个左尖括号(`<<<`)是什么意思?
- python - 实现新的 CSS 设计时必须更改 Flask 端口
- javascript - Electron - 你如何撤销会话权限?
- python - 如何在 Python 中将列表从一个类调用到另一个类?