This is the exercise in question

Define the function

`compose :: [a → a] → (a → a)`

, which composes a list of functions

into a single function, so, for example:

`compose [f0,f1,f2] x = f0 (f1 (f2 x))`

What I have coded up looks like this

```
compose :: [a -> a] -> (a -> a)
compose (f:fs) = f . (compose fs)
```

Now I need something to return for if the argument [a -> a] is empty, but I don’t know what. So for case `compose []`

.

Thanks in advance!

### >Solution :

You use `id`

, it will map the element on itself. This would also be the neutral element in a monoid you can build over functions:

```
compose :: [a -> a] -> (a -> a)
compose [] =
```**id**
compose (f : fs) = f . (compose fs)

your function is equivalent to:

```
compose :: Foldable f => f (a -> a) -> a -> a
compose =
```**foldr (.) id**