通過一流的功能,維基百科的文章閱讀,還有的函數式編程的各個方面的語言支持一個不錯的表: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