Javascript 这个函数有名字吗

Javascript 这个函数有名字吗,javascript,functional-programming,ramda.js,Javascript,Functional Programming,Ramda.js,我正在寻找以下函数的名称: (f,a)=>()=>f(a) 基本上是一个函数,它返回一个函数,调用该函数时用a调用f 这个函数有一个通用名称吗?也许可以用魔法来形容 编辑以澄清: 我要找的和Ramda的部分 partial(f, [a]) 除了那部分更像: (f, a) => (b) => f(a, b) 也就是说,在部分的情况下b是不需要的。我称之为绑定的特殊情况 如果你有两个参数的函数,比如f(x,y),那么你可以定义g(y)=f(5,y)。在这种情况下,您将f中的参数x绑

我正在寻找以下函数的名称:

(f,a)=>()=>f(a)

基本上是一个函数,它返回一个函数,调用该函数时用
a
调用
f

这个函数有一个通用名称吗?也许可以用魔法来形容


编辑以澄清:

我要找的和Ramda的部分

partial(f, [a])
除了那部分更像:

(f, a) => (b) => f(a, b)

也就是说,在
部分
的情况下
b
是不需要的。

我称之为绑定的特殊情况


如果你有两个参数的函数,比如f(x,y),那么你可以定义g(y)=f(5,y)。在这种情况下,您将f中的参数x绑定到固定点5。

我将使用延迟调用调用它的prepared函数

第一部分接受函数和参数,并返回一个函数,而不调用带有参数的给定函数。稍后将通过显式调用函数来调用它。

这是一个高阶函数

高阶函数是将至少一个或多个函数作为输入或返回另一个函数的函数

该定义符合以下准则:

(f, a) => () => f(a)

因为它本质上是一个返回另一个函数的函数。

在JavaScript中,这可能被称为绑定。一般来说,这种类型的组合器可能有一个更具体的名称(这非常类似于apply combinator->
f=>a=>f(a)

易于实现:

const bind = (f, a) => () => f(a)
这是一个好主意

本质上,它是一个具体化的计算,您可以根据需要传递和评估。可能有各种各样的原因需要延迟表达式的计算(可能会很昂贵,可能会有时间敏感的副作用,等等)


constenthunk=f=>a=>()=>f(a)
允许您传递
f(a)
,而无需实际计算它,直到稍后的某个时间点。

对于特定的函数
(f,a)=>()=>f(a)
“高阶函数”是一个非常糟糕的名称。它属于高阶函数类,但绝对不是唯一的一个。@Paulpro如果函数接受或返回一个函数,它将变为“高阶”,这就是我们在这里看到的。我不知道是否有更具体的名字。也许你可以告诉我,至少从现在起我会知道;)FWIW我无法想象在很多地方,这会比在变量中存储
a
并在其中写入箭头函数更好。你得到的意见真是太多了!这是一个主要基于意见的问题,因为你将获得许多基于经验等的意见。因此,这个问题应该结束。@Ele:呃,它要求的是一个存在的名称,而不是关于它应该命名什么的意见。仅仅因为一个名字可能不存在,而人们对如何命名有着不同的看法,并不一定意味着它应该被关闭。@Ryan看看答案,每个人都在踢东西!在我的许多回答中,我将此函数命名为
call
deferred\u call
也很好,它不像
Function.prototype.bind
那样像
partial
。所以,
deferred\u call(f,a)
。我认为这应该是公认的答案。它不仅提供OP请求的名称,还提供指向可信任源的链接。OP请求一个函数,该函数包含两个参数并返回一个thunk。@Sylvester:因此示例中的名称是,
enThunk
我以前回答这个问题时分心了。我打算建议
thunkify
enThunk
更令人满意。@ScottSauyet不要为分心而感到难过:我真希望所有的库作者都像你一样活跃在他们的标签中!