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 `g`∘`f`
(sometimes ASCIIfied as `g``o``f`).
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