supasympa
4/26/2017 - 9:43 PM

Functional Javascript compose example

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))