Crazy-simple Partial Function Application library
Partial function application is way cool! Imagine having a function that you use in multiple places, but its parameters are often repeated due to the configuration not changing. You could wrap the function yourself, or you could use a library like pfa to partially apply arguments to the function.
For instance, the npm library clone takes 3 parameters: clone(obj, isCircular, depth)
- imagine that we always use the same values for the latter 2 arguments:
const result = clone(myObj, false, 50);
It'd be much nicer to just call clone(myObj)
, so we could in turn do something like the following:
const { partialApply, _ } = require("pfa");
const _clone = require("clone");
const clone = partialApply(
_clone, // The function to partially apply arguments
_, // An argument we will provide later
false, // An argument to always provide at the second position
50 // An argument to always provide at the third position
);
const myObj = { key: "value" };
const clonedObj = clone(myObj); // equiv: clone(myObj, false, 50);
pfa exports 3 items:
partialApply
: The partial application function_
: Placeholder for unknown argumentspartialApplyRight
: Partial application to the right side of a function
It also exports the partialApply
function as the default, so CommonJS and ES6 imports can both be used neatly:
const { partialApply, _ } = require("pfa");
Or:
import partialApply, { _ } from "pfa";
You can also apply to the right-hand side of a function using partialApplyRight
, like so:
import { partialApplyRight } from "pfa";
function myMethod(target, defaultValue) {
// some functionality
}
const shorthandMethod = partialApplyRight(myMethod, {});
shorthandMethod({ some: "argument" }); // calls myMethod with 2 arguments
pfa supports NodeJS 6.10 onwards. For browser usage you should transpile to ES5 using something like BabelJS.
Consult the API documentation for more information.
Simply install as a dependency:
npm install pfa --save