This abstraction is a functional utility abstraction which
makes addition and multiplication of Church Numerals
a simple task, even if the understanding of this code might
not be that easy. `compose' belongs to the category of `higher
order functions' because it takes functions as arguments and
returns a new function composed of the two arguments.
See also section basic:compose.