Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const curry = fn => {
- const arity = fn.length;
- return (...args) => {
- if (args.length >= arity) {
- return fn(...args);
- } else {
- return (...secondArgs) => {
- return fn(...[...args, ...secondArgs]);
- }
- }
- }
- };
- const sum = (a, b) => a + b;
- const addOne = curry(sum)(1);
- const addNine = curry(sum)(9);
- addOne(4); // 5
- addNine(1); // 10
- // ======== //
- function partialApp(fn, ...args) {
- if (args.length === fn.length) fn(...args);
- return partialApp.bind(this, fn, ...args);
- }
- partialApplication(sum, 1, 2); // 3
- partialApplication(sum)(1)(2); // 3
- partialApplication(sum)(1, 2); // 3
- partialApplication(sum, 1)(2); // 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement