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);
Where fExisting is any existing function.
Parameters
Parameter | Type | Mandatory | Description | Util.js version |
---|---|---|---|---|
cArgs | One or more arguments | One or more arguments that will be passed in to fExisting when you access it via 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 Object.uAddProperty() example using a curried allianceExistsBetween() function.
See also
- uCompose – create a new function by merging two existing functions
- Curry – I based my uCurry function on code samples from this blog.