# Function composition

### From HaskellWiki

(Difference between revisions)

BrettGiles (Talk | contribs) (HaWiki conversion of composition) |
BrettGiles (Talk | contribs) m (Link add) |
||

Line 7: | Line 7: | ||

In haskell, the type of the <hask>.</hask> operator is <math>(\beta \to \gamma) \to (\alpha \to \beta) \to \alpha \to \gamma</math> | In haskell, the type of the <hask>.</hask> operator is <math>(\beta \to \gamma) \to (\alpha \to \beta) \to \alpha \to \gamma</math> | ||

+ | |||

+ | Further math related items at [http://mathworld.wolfram.com/Composition.html Wolfram's composition page] | ||

===Example=== | ===Example=== | ||

<haskell> | <haskell> |

## Latest revision as of 23:59, 10 October 2006

**Function composition** is the act of pipelining the result of one function, to the input of another, creating an entirely new function.

## [edit] 1 Discussion and example

This can be done with any two functions, where the argument type of the first is the return type of the second. The newly created function takes what the second function would as a parameter and feeds it through the second function, then the result of the second function through the first function, and returns the result of the first function.

Mathematically, this is most often represented by the operator, where (often read as *f of g*) is the composition of *f* with *g*.

.

Further math related items at Wolfram's composition page

### [edit] 1.1 Example

-- the '.' operator is used to compose functions -- result of sort is pipelined to reverse desort = (reverse . sort) -- the result is a descending sort countdown = desort [2,8,7,10,1,9,5,3,4,6]

reverse . sort

\x -> reverse (sort x)