/** * @param {Function[]} functions * @return {Function} */ var compose = function(functions) { return function(x) { return functions.reduceRight( (val, f) => f(val), x, ); }; }; /** * const fn = compose([x => x + 1, x => 2 * x]) * fn(4) // 9 */