EasyJavaScriptTypeScript

Compose

Functional ProgrammingHigher-Order Functions

compose applies functions right-to-left: the last function runs first.

// dirty — manual nesting
const result = double(addOne(square(x)));

// clean — compose
const transform = compose(double, addOne, square);
transform(3); // double(addOne(square(3))) = double(addOne(9)) = double(10) = 20

Implement compose(...fns) that returns a function applying the array of functions right-to-left.

solve(x, label) dispatches to a predefined composition:

  • 'double_addOne'compose(double, addOne)
  • 'square_double'compose(square, double)
  • 'addOne_square_double'compose(addOne, square, double)

Sample tests

Test #1compose(double, addOne)(5) = double(6) = 12
Input: [5,"double_addOne"]
Output: 12
Test #2compose(square, double)(3) = square(6) = 36
Input: [3,"square_double"]
Output: 36
Test #3compose(addOne, square, double)(2) = addOne(square(4)) = 17
Input: [2,"addOne_square_double"]
Output: 17