So most of the functional programming is about passing a behavior to a function.

When in the object-oriented paradigm you have and interface and two implementations, in functional you
have a function (interface) that accepts another function (implementation) and calls it inside.

This particular problem is all about it.

We have cons - high order function that accepts two integers and returns another function,
which accepts the third function that knows how to operate with this integers. Sounds crazy, but let’s try
to give names to all these kinds of function.

First of all, we need to define choice, that knows how to pick one integer out of two.

The function that is returned by given implementation of cons I called makeChoice. This type of function knows
what to do with given choice.