Utilities for applying functions recursively and enabling function self-reference.
Invoke the given function with another function which will, when evaluated, do this again.
Invoke the given function with a supplied argument and another function which, when invoked, will once again invoke the original function with the new argument, etc.