An algorithm which turns a term into a function of some variable. Using bracket abstraction and currying we can define a language without bound variables in which the only operation is monadic function application. See combinator.