Explain the concept of partial application
TL;DR
Partial application is a technique in functional programming where a function is applied to some of its arguments, producing a new function that takes the remaining arguments. This allows you to create more specific functions from general ones. For example, if you have a function add(a, b), you can partially apply it to create a new function add5 that always adds 5 to its argument.
Partial application
Partial application fixes some arguments of a function and returns a new function that accepts the remaining arguments. This creates specialized functions from more general ones.
Example
Consider a simple add function that takes two arguments:
Using partial application, you can create a new function add5 that always adds 5 to its argument:
How it works
In the example above, add.bind(null, 5) creates a new function where the first argument (a) is fixed to 5. The null value is used as the this context, which is not relevant in this case.
Benefits
- Code reusability: You can create more specific functions from general ones, making your code more modular and reusable.
- Readability: Partially applied functions can make your code easier to read and understand by reducing the number of arguments you need to pass around.
Real-world example
Partial application is often used in libraries like Lodash. For example, Lodash's _.partial function allows you to create partially applied functions easily:
Further reading
- MDN Web Docs: Function.prototype.bind()
- Lodash Documentation: _.partial
- Wikipedia: Partial application