combinator

A function with no free variables. A term is either a constant, a variable or of the form A B denoting the application of term A (a function of one argument) to term B. Juxtaposition associates to the left in the absence of parentheses. All combinators can be defined from two basic combinators - S and K. These two and a third, I, are defined thus:

	S f g x	= f x (g x)
	K x y	= x
	I x	= x		= S K K x

There is a simple translation between combinatory logic and lambda-calculus. The size of equivalent expressions in the two languages are of the same order.

Other combinators were added by David Turner in 1979 when he used combinators to implement SASL:

	B f g x = f (g x)
	C f g x = f x g
	S' c f g x = c (f x) (g x)
	B* c f g x = c (f (g x))
	C' c f g x = c (f x) g

See fixed point combinator, curried function, supercombinators.