An idea with many names.

In mathematics, given two functions f and g, such that the range of g is a subset of the domain of f, the composition of f and g is a new function h such that h(x) = g(f(x)).

The symbol for composition of f and g is gf (sometimes ASCIIfied as gof). Category theorists sometimes write f;g (note order is swapped) to denote the same thing.

In a programming language, composition may be written as a higher-order function (eg, in Scheme below):

(define (compose f g) (lambda (x) (f (g x))))

In a polymorphic language, the above definition would have type ((b -> c) * (a -> b)) -> a -> c, or in curried form (b -> c) -> (a -> b) -> a -> c.

As a final note, function composition is also known as the B combinator in some circles. It is defined by the rewrite rule

Bfgx => f(gx)

or in terms of the S and K combinators B = S(KS)K

Log in or register to write something here or to contact authors.