Overview
Create a new function based on an existing function but with some parameters pre-defined.For more info on currying, see Wikipedia.
Availability
Util.js v0.5 and above.
Syntax
// create new function based on existing one with one or more pre-defined arguments var fNew = fExisting.uCurry(cArgs); // use the new function, optionally specifying additional arguments fNew(args);
Parameters / Functions
Parameter / Function | Type | Mandatory | Description | Util.js version |
---|---|---|---|---|
fExisting | Function | The original function | 0.5 | |
cArgs | One or more arguments | One or more arguments that will be passed in to fExisting when you access it via fNew | 0.5 | |
args | Additional arguments | Optionally (based on requirements of fExisting) pass in remaining arguments when calling fNew | 0.5 |
Return value
Value | Type | Description | Util.js version |
---|---|---|---|
<fNew> | Function | A new function which will automatically set the cArgs arguments for fExisting and then append any additional arguments passed in to fNew. | 0.5 |
<fExisting> | Function | If you do not specify cArgs then the existing function will be returned. | 0.5 |
Example
Basic example - pre-defining "not" and "a" params of a "booler" function
function add(a,b) { return a+b; } var Add5To = add.curry(5); // parameter "a" is pre-defined with value 5 Add5To(10); // 15 (parameter "a" already set to 5, "b" set to 10)
A better example is shown in the Object.uAddProperty() example using a curried allianceExistsBetween() function.
See also
- Function.uCompose() – create a new function by merging two existing functions
- Curry – I based my uCurry function on code samples from this blog (which includes more detailed information on how Curry works).