在函数式编程中,你会把这种操作称为什么?在函数式编程中,你会把这种操作称为什么?
function(f,vargs){ //variable count of arguments
return function(){
return f(vargs)
}
}
我认为这是哗众取宠,但我得到的印象是钻营这个名词时,我们绑定一个参数没有几个参数。或者,也许这是一个延迟,不太确定...
在函数式编程中,你会把这种操作称为什么?在函数式编程中,你会把这种操作称为什么?
function(f,vargs){ //variable count of arguments
return function(){
return f(vargs)
}
}
我认为这是哗众取宠,但我得到的印象是钻营这个名词时,我们绑定一个参数没有几个参数。或者,也许这是一个延迟,不太确定...
apply
是正确的说法 - 例如,巨蟒有一个相当于apply
(即现在已经过时)。
另请参阅部分申请in Haskell或in Javascript。如果部分应用程序使用某些的函数参数,那么接下来完整应用程序或仅应用程序必须使用全部的参数,就像您上面所做的那样。
好的演绎工作在那里,谢谢! – 2009-10-15 23:49:03
我打电话正在构建一个closure。
我认为它被称为功能应用程序。
请记住,在功能性范例,
function(){
return f(vargs)
}
是不带参数的函数,是大致含有f(vargs)
结果的程序编程变量的等价物。
我的理解是,currying是部分应用函数并返回匹配原始函数的签名减去应用参数的函数的行为。
看看这篇文章 - The Art of Currying
这看起来像一个Higher Order function
是的,我不确定这是否是一个参数。 – 2009-10-15 10:01:44
我不认为它必须是一个咖喱功能的一个参数,只是不是所有的参数:) – 2009-10-15 10:03:26
function(f, args) {
return (
function() { return f(vargs) }
)
}
外部函数接受˚F和ARGS,它返回的是一个匿名函数,只返回f(args)
,其中˚F和vargs是外部函数的参数。
在Mathematica例如,你可以写它为F[f_, args___] := f[args]&
。由于返回的匿名函数是一个常量函数(不接受任何参数),因此您也可以将其写为F[f_, args___] := f[args]
,省略最后的&
。
你知道Mathematica中用于这类事情的名字吗? – 2009-10-19 06:01:33
据我所知,整个操作没有标准名称,它将_f_和_args_作为参数,并返回一个常量函数,其值可通过将_f_应用于_args_来获得。 – 2010-02-12 17:44:43
'混淆'如何? – pavium 2009-10-15 09:52:14
@pavium,是的,它可能有点混淆一见钟情,但它不是混淆:) – 2009-10-15 09:56:10
是的,我很讽刺。 – pavium 2009-10-15 10:00:07