我正在寻找以下功能的名称:
(f, a) => () => f(a)
基本上是一个函数,它返回一个函数,当被调用时f
调用a
。
此功能是否有通用名称?也许它可以用一些Ramda魔法来描述?
编辑以澄清:
我正在寻找的与Ramda的部分相似,
partial(f, [a])
除了部分更像:
(f, a) => (b) => f(a, b)
即b
的{{1}}是不受欢迎的。
答案 0 :(得分:9)
那是thunk。
基本上,这是一个可以传递并按需评估的具体计算。人们可能想要延迟对表达式的评估有各种各样的原因(它可能很昂贵,它可能具有时间敏感的副作用等)。
通过const enThunk = f => a => () => f(a);
,您可以传递f(a)
,而无需在以后的某个时间点对其进行实际评估。
答案 1 :(得分:2)
我会用延迟调用来调用它准备好的函数。
第一部分接受函数和参数并返回一个函数,而不用参数调用给定的函数。稍后会通过显式调用函数来调用它。
答案 2 :(得分:1)
我称之为绑定的特殊情况
如果你有两个参数的函数,比如f(x,y),那么你可以定义g(y)= f(5,y)。在这种情况下,您将f中的参数x绑定到固定点5。
答案 3 :(得分:0)
在JavaScript中,这可能被称为绑定。一般来说,这种类型的组合子可能有一个更具体的名称(与应用组合子非常相似 - > f => a => f(a)
)。
易于实施:
const bind = (f, a) => () => f(a)
答案 4 :(得分:-1)
这是高阶函数。
高阶函数是一个函数,它至少将一个或多个函数作为输入或返回另一个函数。
这个定义满足代码:
(f, a) => () => f(a)
因为它本质上是一个返回另一个函数的函数。