【发布时间】:2011-06-02 16:24:10
【问题描述】:
我有一个函数 f: (a, b, c = 5, d = 0) -> {...},它接受 2 到 4 个参数。
我想传递这个函数的“绑定”版本,它总是对最后一个参数使用默认值,但对前两个参数使用特定值(比如 1 和 2)。也就是说,我要g: () -> f(1, 2)。
如果我要进行部分申请,我会得到g': (c = 5, d = 0) -> f(1, 2, c, d)。也就是说,部分应用不会强制执行我想要的 g 的零参数性质,而是给我 g' 接受 0 到 2 个参数。
如果有的话,从f 获取g 的技术是什么?
【问题讨论】:
-
f已经有了默认参数,那么为什么不使用柯里化g: () -> f(1, 2)呢? -
我不明白这个问题与柯里化有何关系。您描述的问题似乎与使函数接受一个参数并返回另一个函数无关,这就是柯里化。
-
正如@murgatroid99 指出的那样,这与柯里化无关......我认为你的意思是“部分应用”,这是很多人与柯里化混淆的东西。我不知道您所描述的技术的具体名称。
-
@murgatroid99, @pelotom:你们是对的,我说的是部分应用,而不是柯里化。好尴尬-_-。
-
@Matt Ball 我不明白你的意思。我希望
g接受 0 个参数,而不是介于 0 和 2 之间。
标签: functional-programming partial-application