Build a term which is a variable reference.
Build a term by applying terms to an atomic function.
(atomic function) is one of the type parameters, this package
is mostly indifferent to its internal structure.
A fold for the term data type, which understands terms built from a variable and a term built from the application of a primitive function to other terms.