Functional Javascript compose example
const add = (...args) => {
console.log('add ', args)
return args.reduce((acc, n) => acc += parseInt(n), 0)
}
const exec = (fn, ...args) => {
console.log('exec ', fn, args)
return fn.apply(fn, args)
}
const compose = (fns) => {
return function (init) {
console.log(init)
return fns.reduce((acc, n) => exec(n, acc), init)
}
}
const multiplyBy10 = (val) => val * 10
const add10 = (val) => val + 10
const minus23 = (val) => val - 23
const composed = compose([add10, multiplyBy10, minus23])
console.log(composed(3))