See also ComposeFunction
An operation on functions, usually denoted by a middot, a circle or juxtaposition. In the following, let us denote composition by a lowercase 'o'.
(f o g)(x) = f(g(x))In HaskellLanguage, we have the predefined function "." which is composition:
f . g = \x -> f (g x)Composition can be used extensively to build processing lines out of individual building blocks. You often see code as the following in Haskell:
nextmoves breadth = pruneBadMoves breadth . pruneImpossible . genNextMoves pruneBadMoves breadth = pruneByValue breadth . estimateMove . pruneByDepth 3 ...Some people define InverseFunctionalComposition to avoid these read-last-to-first definitions, e.g.
f >>> g = \x -> g (f x) -- in Haskell's Control.Category...and some people use ForthLanguage or JoyLanguage instead.
In SmlLanguage, we have the predefined operator "o" which is composition
JoyLanguage shows that you can do almost everything with just composition of well-chosen primitives.