I'm trying to derive function of three args, using simple function chaining.

The function should be of type

```
addToList :: a -> a -> a -> [a]

```

and be pointfree analogue of 

```
addToList :: a b c = (a : (b : (c : [])))

```

So far, I've figured out

```
addToList = ((.)((.) (flip (:)) . (flip (:))) . (flip (:))) []

```

But it works in reverse: 

```
Prelude> addToList 4 5 6
[6,5,4]

```

and looks bulky.

How can one get something nice like

```
(.) (.) (.) (:) (:) (: [])

```

that works as follows:

```
Prelude> addToList 4 5 6
[4,5,6]

```

?