Gödel Numberings, Principal Morphisms, Combinatory Algebras: A Category-theoretic Characterization of Functional Completeness

Functional languages are based on the notion of application: programs may be applied to data or programs. By application one may define algebraic functions and a programming language is functionally complete when any algebraic function f(x1,...,xn) is representable (i.e. there is a constant a such that f(x1,...,xn) = ax1· ... ·xn). Combinatory Logic (C.L.) is the simplest type-free language which is functionally complete.