Reading through the Wikipedia article on First-Class functions, there is a nice table of language support for various aspects of functional programming: http://en.wikipedia.org/wiki/First-class_function#Language_support
JavaScript is listed as not having partial function application. However, there are techniques for creating a function that returns a function that with some of the parameters stored in a closure, ie:
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
Is this not partial function application? If not, could someone please provide an example of partial function application in another language and explain how it is different?
Thanks!
What you show is an example of higher order functions, functions that take functions as arguments and/or return functions.
Partial application is something different. Here a Haskell example:
addis a function that takes twoIntand returns anInt, denoted asInt -> Int -> Int. If you’re unfamiliar with the syntax, in Javascript this would roughly look like this:add 1calls this function with only one parameter, which returns a new function that takes oneIntand returns anInt(Int -> Int). Theaddfunction was not explicitly designed to be a higher order function, it was simply partially applied.