diff --git a/problems/function-composition.js b/problems/function-composition.js new file mode 100644 index 0000000..67453e4 --- /dev/null +++ b/problems/function-composition.js @@ -0,0 +1,17 @@ +/** + * @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 + */