compose

by Artem

JavaScript

'use strict';

const compose = (...args) => {
  return a => {
    return args.reverse().reduce((acc, fn) => {
      return fn(acc);
    }, a);
  };
};

const f1 = input => {
  return input + 'World!';
};

const f2 = () => {
  return 'Hello, ';
};

const composed = compose(f1, f2);
console.log(composed());