通过一流的功能,维基百科的文章阅读,还有的函数式编程的各个方面的语言支持一个不错的表:http://en.wikipedia.org/wiki/First-class_function#Language_supportJavaScript是否支持部分功能应用?
的JavaScript被列为没有局部的功能应用。不过,也有用于创建一个返回功能,与一些存储在一个封闭的参数的函数,即技术:
var add = function(a, b){
return a + b;
},
apply = function(fn, a){
return function(b){
return fn(a, b);
}
},
addFive = apply(add, 5);
console.log(addFive(2)); // prints 7
这难道不是局部的功能应用?如果不是,有人可以提供另一种语言的部分功能应用程序的例子,并解释它是如何不同?
谢谢!
原谅我,我不是熟悉Haskell语法。 “add”的函数签名是否说“add”需要两个Ints并返回一个Int?这是说,调用一个只有1个参数的函数会隐式地返回部分应用的函数吗? – 2012-03-22 07:19:41
翻译成Javascript。是的,简单来说,'Int - > Int - > Int'表示它需要两个'Int'并返回一个。也许更正确,但它会将一个“Int”和另一个“Int”转换为另一个“Int”。我猜想,真正的哈斯克勒仍然会遇到我的术语问题,但是对于外行来说,这应该是可以做到的。 :o) – deceze 2012-03-22 07:23:22
我想是这样的 - 即'add'就像这样:http://paste.pocoo.org/show/569340/ – ThiefMaster 2012-03-22 07:23:50