const add = x => x + 10;
const mul = x => x * 10;
const compose = (...fns) => {
return args => {
return fns.reduce((fn1, fn2) => {
console.log(fn1)
return fn1(fn2(args))
})
}
}
console.log(compose(mul, add)(10));
const pipe = (val, ...fns) => {
return fns.reduce((val, fn) => {
return fn(val);
}, val)
}
function f1(arg) {
console.log("f1", arg);
return arg;
}
function f2(arg) {
console.log("f2", arg);
return arg;
}
function f3(arg) {
console.log("f3", arg);
return arg;
}
function compose1(...funcs) {
if (funcs.length === 0) {
return arg => arg;
}
if (funcs.length === 1) {
return funcs[0];
}
return funcs.reduce((a, b) => {
console.log(a,b, 33)
return (...args) => a(b(...args));
});
}