问题标签 [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.
python - functools.partial 想要使用位置参数作为关键字参数
所以我想了解partial
:
在:
在:
如果我用作关键字参数,TypeError
则消失:y
在:
是什么原因导致的TypeError
?
haskell - Function Composition - Haskell
again another question generated by my attempts at the Project Euler questions (follow on from a previous question). I'm having trouble understanding the following line:
Specifically
The type signature for the first argument of map from ghci is [c] -> c:
The type signature for map (product . take 13)
from ghci is [[b]] -> [b]:
Am I right in saying that as the first argument of map should be a function, [[b]] is not referring to a list of lists, but rather to a list of (partially applied) functions generated by (product . take 13)
, with the second argument for the partial functions coming from (tails number)
?
haskell - 使用部分应用函数缓存内部结构
想象这样一个函数:
该函数IO
使用 aFoo
和其他值执行一些操作。该Foo
值必须传递给bar
,并且可以IO
通过以下方式检索:
现在,A
,B
,C
和X
都是纯纯值。我更喜欢这样的bar
功能:
并且Foo
将使用该值在bar
函数中生成。X
如果我这样做:
f :: A -> B -> C -> IO ()
. 如果我多次调用该函数,X
由于部分应用,该值保持不变,但由于它是IO
效果,因此每次都会生成它。是否有一种原生的、内置的 ghc方式来执行某种缓存,以便Foo
生成一次值——用于生成的闭包?我想这一切都与拳击有关,但我从来没有想过如何在不使用脏的情况下做到这一点IORef
,扩展 的参数bar
,这很难看。
function - Haskell 中的函数应用
好的,这是漫长的一天,我的大脑可能无法在 Haskell 级别上运行,但我无法理解“Learn You a Haskell”中的一个例子。
该部分被称为带有 $ 的函数应用程序,并且有如何$
定义的示例:
到目前为止,一切都清楚了。我理解本节中的所有示例,除了最后一个:
在这里,我们($ 3)
跨函数列表进行映射,并将这些函数应用到3
. 但这怎么可能?
从第一个代码片段可以清楚地看出,第一个参数是一个函数,我们甚至可以这样写:
现在($ 3)
是函数的一个部分应用$
,而是3
在函数的位置上!那么3
应该是一个功能还是什么?
还有一个谜团:到底是(4+)
什么?我知道那(+4)
是函数的偏应用+
,那么(4+)
应该是函数的偏应用4
吗?废话。什么样的技巧在这里起作用?
haskell - 具有多个参数的 Haskell 中的部分应用
给定一些函数 f(x1,x2,x3,..,xN),在几个地方部分应用它通常很有用。例如,对于 N=3,我们可以定义 g(x)=f(1,x,3)。然而,Haskell 中的标准部分应用程序并不能以这种方式工作,它只允许我们通过固定第一个参数来部分应用一个函数(因为所有函数实际上只接受一个参数)。有没有简单的方法来做这样的事情:
输出值为f 1 2 3
? 当然我们可以做一个 lambda 函数
但我觉得这很不可读。例如,在 Mathematica 中它是这样工作的,我觉得这很好:
带输出f[1,2,3]
。
编辑:也许我应该多说一些关于动机的事情。我想在点式组合中使用这种部分应用的函数,即在这样的表达式中:
得到h 3 = g(f(k(3),2))
.
haskell - 为什么可以在haskell中定义没有参数的函数
我有函数 add,我部分应用它来创建一个新函数 addOne。
addOne 可以使用显式参数定义
或没有显式参数
我有四个问题:
- 为什么我可以在没有显式参数的情况下定义新函数?
- 这两个定义有什么区别吗?
- 我什么时候知道什么时候可以定义没有参数的函数?
- 首选哪个定义以及何时?
scala - Scala:foreach 中的咖喱函数?
我在使用“foreach”方法迭代集合时尝试使用 curried 函数:
为什么行 'lst.foreach(fun("one"),("two") _) ' 不编译并返回:
错误信息?
scala - Scala:在'foreach'中使用咖喱函数从文件中读取行?
从文件中读取行我尝试在“foreach”中使用咖喱函数:
出于某种原因,以下两种说法都没有:
产生任何输出。为什么?
javascript - Javascript currying:为什么一个闭包范围示例有效,而另一个无效?
我正在尝试了解 Vimeo 上的视频“Understanding Function Currying”(http://vimeo.com/41238143,但没有必要为了理解这个问题而查看它)。
我理解的例子
在视频的开头,我们被告知此代码存在问题:
这段代码的问题:在第 11 行和第 14 行使用回调不起作用,因为它超出了范围 - onSuccess存在于buildCRUD范围内,而不是create范围内。(我将其称为“回调示例”。)
好的,这对我来说很有意义。考虑的解决方案包括使用单个类变量(我知道这个术语是关闭的,因为 javascript 没有类,但你知道我的意思)。
看不懂的例子
这就是我感到困惑的地方。在视频的最后,我们被告知该函数不同部分的代码将起作用。(注意“className”变量参数;我将其称为“className 示例”。)
(对不起,我切断了写着“var ...”的行,请相信我它就在那里,并且createFn、getFn等都被声明为长“var”行的一部分。)
如您所见,这些函数(如createFn )的实现确实使用了className变量,尽管它没有作为参数传递给函数。
这是我的问题:为什么className在createFn的范围内?在我看来,它在forClass范围内并不比onSuccess在 create 范围内更多。
这和这有关系吗...
- 回调示例中的函数从未在创建函数上下文中被分配为变量,仅被调用?
- 使用承诺的回调示例?
f# - 为什么这个无点 F# 函数的行为与非无点版本不同?
考虑以下 F#:-
在我看来,功能getValFromMapPartial
和是相同的。getValFromMapPartialAndTacit
F# 说它们具有完全相同的类型:(string -> int)
. 然而它们的行为非常不同,它们的编译方式也非常不同。使用 dotPeek 进行反编译,我看到这getValFromMapPartial
是一个方法,而getValFromMapPartialAndTacit
它是一个在 ctor 中初始化的字段。
F# 不会抱怨getValFromMapPartialAndTacit
,即使在最高警告级别(在 VS 2012 和 2013 中)。然而在我上面的示例中调用这个函数失败了,大概是因为它已经包装了初始的空版本someMap
,尽管它是可变的。
为什么这两个功能有区别?F# 是否应该警告默认/无点版本可能会失败?