在函数式编程中,您会将这种操作称为什么?

时间:2009-10-15 09:48:14

标签: functional-programming

在函数式编程中,你会称这种操作为什么?

function(f,vargs){ //variable count of arguments
   return function(){
       return f(vargs)
   }
}

我认为这是Currying,但我的印象是currying是我们绑定单个参数而不是几个参数的术语。或许这是一个延迟,不是很确定......

5 个答案:

答案 0 :(得分:4)

我认为它叫做功能应用程序。

请记住,在功能范例中,

function(){
    return f(vargs)
}

是一个没有参数的函数,大致相当于包含f(vargs)结果的程序编程变量。

答案 1 :(得分:4)

apply是正确的术语 - 例如,Python有一个等效的apply(现已弃用)。

另请参阅部分申请in Haskellin Javascript。如果部分应用程序使用该函数的某些参数,那么完整应用程序或仅应用程序必须使用所有参数就像你上面那样。

答案 2 :(得分:2)

我理解currying是部分应用函数并返回与原始函数的签名相匹配的函数减去应用的参数的行为。

看一下这篇文章 - The Art of Currying

这看起来像Higher Order function

答案 3 :(得分:1)

我打电话来构建一个closure

答案 4 :(得分:0)

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],省略最后一个&