这个函数有名字吗

Is there a name for this function

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

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

基本上是一个函数 returns 调用时调用 fa 的函数。

这个函数有通用名称吗?也许它可以用一些 Ramda 魔法来描述?


编辑澄清:

我要找的和Ramda的partial类似,

partial(f, [a])

除了部分更像是:

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

partial 中的 b 是不需要的。

我称之为绑定的特例

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

我将其称为具有延迟调用的准备函数。

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

这是一个higher-order函数

一个higher-order函数是一个至少接受一个或多个函数作为输入或returns另一个函数的函数。

这个定义满足代码:

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

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

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

实施简单:

const bind = (f, a) => () => f(a)

那是 thunk

从本质上讲,这是一种具体化的计算,您可以根据需要传递和评估。人们可能出于各种原因想要延迟表达式的计算(它可能很昂贵,可能有 time-sensitive 副作用,等等)。

执行 const enThunk = f => a => () => f(a); 可以让您绕过 f(a) 而无需实际评估它,直到稍后的某个时间点。