Question: 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!

Answer: 
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](http://www.haskell.org/haskellwiki/Partial_application):

```
add     :: Int -> Int -> Int
add x y = x + y

addOne = add 1

```

`add` is a function that takes two `Int` and returns an `Int`, denoted as `Int -> Int -> Int`. If you're unfamiliar with the syntax, in Javascript this would roughly look like this:

```
/**
 * @param int x
 * @param int y
 * @return int
 */
function add(x, y) {
    return x + y;
}

```

`add 1` calls this function with only one parameter, which returns a new function that takes one `Int` and returns an `Int` (`Int -> Int`). The `add` function was not explicitly designed to be a higher order function, it was simply partially applied.
```
var func1 = function(a, b) {
  return a + b;
}

var func2 = func1.bind(undefined, 3);

func2(1); // 4
func2(2); // 5
func2(3); // 6

```

check [docs at developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)