# Function Composition Lab

In this lab, you will be working on creating a **function composition** from an array of functions using ESM (ECMAScript Modules) import/export. The goal is to implement a `compose`

function that takes an array of functions `[f1, f2, f3, ..., fn]`

as input, and returns a new function `fn`

that represents the composition of all the given functions.

The **function composition** of `[f(x), g(x), h(x)]`

is given by `fn(x) = f(g(h(x)))`

.

The **function composition** of an empty list of functions is the **identity function** `f(x) = x`

.

You may assume that each function in the array accepts one integer as input and returns one integer as output.

Here are some examples to help you understand the problem:

## Example 1:

`const fn = compose([x => x + 1, x => x * x, x => 2 * x]) fn(4) // 65`

Evaluating from right to left ...

Starting with x = 4.

2 * (4) = 8

(8) * (8) = 64

(64) + 1 = 65

## Example 2:

`const fn = compose([x => 10 * x, x => 10 * x, x => 10 * x]) fn(1) // 1000`

Evaluating from right to left ...

10 * (1) = 10

10 * (10) = 100

10 * (100) = 1000

## Example 3:

`const fn = compose([]) fn(42) // 42`

The composition of zero functions is the identity function.

**Constraints:**

`-1000 <= x <= 1000`

`0 <= functions.length <= 1000`

- All functions accept and return a single integer

Make sure to default export any functions or variables that need to be accessed in your code, as the evaluation script requires those exports to test your implementation.

Happy coding!