The example factory mkFunc packs a fair amount into a short description. The main
thing to notice is that the lambda indicates a function from n to the result. By the type
signature, everything is an Int, although type inference would allow a broader type.
The form of the function definition is primitive recursive. An empty list produces a
result of zero. A non-empty list produces either the result given by its head pair, or the
result that would be produced if only its tail is considered (and the tail eventually
shrinks to empty by recursion).