问题标签 [partial-application]
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.
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 的部分)来创建简单、简洁的辅助方法。
language-agnostic - 柯里化和部分应用有什么区别?
我经常在网上看到各种各样的抱怨,说别人的柯里化例子不是柯里化,实际上只是部分应用。
对于什么是部分应用程序,或者它与柯里化有何不同,我还没有找到一个体面的解释。似乎存在一种普遍的混淆,等效的例子在某些地方被描述为柯里化,而在其他地方则被描述为部分应用。
有人可以为我提供这两个术语的定义,以及它们之间的区别细节吗?
python - Python 参数绑定器
如何将参数绑定到 Python 方法以存储空函子以供以后调用?类似于 C++ 的boost::bind
.
例如:
f# - F# 将带参数的运算符传递给函数
您能否仅使用部分应用的运算符传入“除以 2”或“减 1”之类的运算,其中“加 1”如下所示:
发生的事情是 1 作为第一个参数应用于 (+),而列表项作为第二个参数应用。对于加法和乘法,此参数排序无关紧要。
假设我想从每个元素中减去 1(这可能是初学者的常见错误):
1 应用于 (-) 作为它的第一个参数,所以(list_item - 1)
我得到. 而不是(1 - list_item)
. 我可以将其重写为添加负数而不是减去正数:
我正在寻找一种更具表现力的方式来编写它,例如((-) _ 1)
,其中_
表示占位符,就像在 Arc 语言中一样。这将导致1
成为 的第二个参数-
,因此在 List.map 中,它将评估为list_item - 1
。所以如果你想映射divide by 2
到列表,你可以写:
可以这样做还是我必须使用(fun x -> x/2)
?似乎最接近占位符语法的方法是使用带有命名参数的 lambda。
scala - 为什么以及何时需要在方法名称后面加上 _?
_
关于何时需要使用after 方法将其用作函数的规则,我有点摇摆不定。Foo
例如,为什么下面的's 和Nil
's有区别::
?
scala - 什么时候scala偏函数不是偏函数?
在创建 String 到部分函数的映射时,我遇到了意外行为。当我创建一个部分函数作为地图元素时,它工作正常。当我分配给一个 val 时,它会调用它。尝试调用检查会产生错误。这是预期的吗?我在做傻事吗?注释掉check()
以查看调用。我正在使用 scala 2.7.7
scala - 部分应用的递归函数
如何将 foo 编写为部分应用的函数,我不必在每个递归调用中传递名称而只需调用foo(map1)
?
python - Python:为什么需要 functools.partial?
部分应用很酷。提供了哪些functools.partial
您无法通过 lambdas 获得的功能?
functools
以某种方式更有效,还是更易读?
scala - 提升请求对象
在 liftbook 中,有一个使用 apply 创建 Req 实例的示例:
但是当我查看 api 文档时,有两个 apply() 方法,但我不知道在这个例子中是哪一个以及如何运行。另外,有没有办法,如何包含/a/b
和/a/b/c
请求一个case
?
另外,有没有办法,如何在一个中枚举所有可能的请求case
:guess case Req(List("api", "expense", eid), "", {GetRequest,PostRequest})
:?
谢谢回答。
haskell - Haskell - 柯里化?需要进一步解释
所以像
为什么这行得通?咖喱部分。为什么没有变量?