curry
by Artem
JavaScript
'use strict';
const _pipe = (f, g) => (...args) => g(f(...args));
const pipe = (...fns) => fns.reduce(_pipe);
const add = (a, b) => a + b;
const inc = num => num + 1;
const dbl = num => num * 2;
const pipeline = pipe(add, inc, dbl, inc);
// console.log(pipeline(1, 2));
const curry = fn => {
if (fn.length <= 1) return fn;
return function inner(...args) {
if (args.length === fn.length) return fn.apply(this, [...args]);
return (...newArgs) => inner(...args, ...newArgs);
};
};
let curried = curry(add);
console.log(curried(1)(2));