问题标签 [currying]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - F# 柯里化函数
任何人都有一个不错的例子,最好是实用/有用的,他们可以发布演示这个概念吗?
javascript - 什么是“柯里化”?
我在几篇文章和博客中看到了对 curried 函数的引用,但我找不到一个好的解释(或者至少是一个有意义的解释!)
javascript - JavaScript curry:有哪些实际应用?
我想我还没学会咖喱。我明白它的作用,以及如何去做。我只是想不出我会使用它的情况。
你在哪里使用 JavaScript 中的柯里化(或者主要库在哪里使用它)?欢迎使用 DOM 操作或一般应用程序开发示例。
其中一个答案提到了动画。类似的函数slideUp
,fadeIn
将元素作为参数,通常是一个柯里化函数,返回内置默认“动画函数”的高阶函数。为什么这比仅仅应用带有一些默认值的更高层函数更好?
使用它有什么缺点吗?
根据这里的要求,有一些关于 JavaScript currying 的好资源:
- http://www.dustindiaz.com/javascript-curry/
- Crockford, Douglas (2008) JavaScript:好的部分
- http://www.svendtofte.com/code/curried_javascript/ (绕道进入 ML,所以跳过“ML 速成课程”的整个部分,然后从“如何编写 curried JavaScript”重新开始)
- http://web.archive.org/web/20111217011630/http://blog.morrisjohns.com:80/javascript_closures_for_dummies
- JavaScript 闭包是如何工作的?
- http://ejohn.org/blog/partial-functions-in-javascript(Resig 先生照常谈钱)
- http://benalman.com/news/2010/09/partial-application-in-javascript/
当他们在评论中出现时,我会添加更多内容。
因此,根据答案,一般来说,柯里化和部分应用是便利技术。
如果您经常通过使用相同配置调用高级函数来“优化”高级函数,则可以对高级函数进行 curry(或使用 Resig 的部分)来创建简单、简洁的辅助方法。
c++ - 如何在 C++ 中进行柯里化?
什么是咖喱?
如何在 C++ 中进行柯里化?
请解释 STL 容器中的活页夹?
language-agnostic - 柯里化和部分应用有什么区别?
我经常在网上看到各种各样的抱怨,说别人的柯里化例子不是柯里化,实际上只是部分应用。
对于什么是部分应用程序,或者它与柯里化有何不同,我还没有找到一个体面的解释。似乎存在一种普遍的混淆,等效的例子在某些地方被描述为柯里化,而在其他地方则被描述为部分应用。
有人可以为我提供这两个术语的定义,以及它们之间的区别细节吗?
programming-languages - Scheme中柯里化函数的实现
当我执行以下操作时会发生什么?
我知道我可以这样做:
现在我可以使用咖喱了。我很好奇的是函数的定义。是否行
以 x 作为参数创建一个新的 lambda,然后在 1 上调用它?或者它是否比这更聪明,它只是重新使用现有的。(例如,如果我这样做(curried 0)
,该((func x) 1)
行将等同于(curried 1)
- PLAI Scheme 这样做吗?)
closures - 闭包和柯里化的区别和可能的相似之处是什么?
我已经阅读了一些关于闭包和柯里化的帖子,但我觉得我没有找到答案。那么闭包和柯里化的区别和相似之处是什么?谢谢您的帮助 :)
c# - C# 中的正确柯里化
给定一个DoSomething
采用(无参数)函数并以某种方式处理它的方法。有没有比下面的代码片段更好的方法来为带参数的函数创建“重载”?
c# - 为什么我不能使用扩展方法隐式转换委托?
我正在尝试找出一种自动将某些内容投射到 Action 或 Func 的方法,而我能想到的最好的方法是这样的:
必须有更好/更简单的方法来做到这一点,有什么想法吗?
scheme - 初学者:Scheme 中的柯里化函数
我正在使用 SICP 讲座和文本来自己了解 Scheme。我正在看一个练习,上面写着“表达式 E 的应用程序是 (E E1,...En) 形式的表达式。这包括 n=0 的情况,对应于表达式 (E)。Curried 应用程序E 的应用要么是 E 的应用,要么是 E 的 Curried 应用的应用。”
(编辑:我更正了上面的引用......我最初错误地引用了定义。)
任务是定义计算为 3 的过程的 Curried 应用程序
我真的不明白这里的想法,阅读关于 Curriying 的维基百科条目并没有真正帮助。
任何人都可以帮助更清楚地解释这里的要求吗?
实际上,即使给我这个问题的答案也会有所帮助,因为在这个问题之后还有五个要解决。...我只是没有得到基本的想法。
补充:即使在布赖恩坎贝尔冗长的解释之后,我仍然有些迷茫。
被(foo1 (sqrt 3)))
认为是 foo 的应用程序,因此是 foo 的柯里化应用程序?
看起来太简单了,但也许...
输入(((foo1 2 )) 2)
DrScheme 会出现以下错误(我有点预料到)
重新阅读什么是柯里化?我知道我也可以将 foo1 重新定义为:
那么我可以输入
12
但这并没有真正让我更接近于产生 3 作为输出,而且看起来这并不是真正对原始 foo1 进行柯里化,它只是重新定义它。
该死,20 年的 C 编程并没有让我为此做好准备。:-) :-)