# Functions

## compose

</>
``pub fn compose(fun1: fn(a) -> b, fun2: fn(b) -> c) -> fn(a) -> c``

Takes two functions and chains them together to form one function that takes the input from the first and returns the output of the second.

## constant

</>
``pub fn constant(value: a) -> fn(b) -> a``

A function that takes a single argument and returns a new function that ignores its argument and always returns the input value.

## curry2

</>
``pub fn curry2(fun: fn(a, b) -> c) -> fn(a) -> fn(b) -> c``

Takes a function with arity two and returns a curried equivalent. `fn(a, b) -> c` becomes `fn(a) -> fn(b) -> c`.

## curry3

</>
``````pub fn curry3(fun: fn(a, b, c) -> d) -> fn(a) ->
fn(b) -> fn(c) -> d``````

Takes a function with arity three and returns a curried equivalent. `fn(a, b, c) -> d` becomes `fn(a) -> fn(b) -> fn(c) -> d`.

## curry4

</>
``````pub fn curry4(fun: fn(a, b, c, d) -> e) -> fn(a) ->
fn(b) -> fn(c) -> fn(d) -> e``````

Takes a function with arity four and returns a curried equivalent.

## curry5

</>
``````pub fn curry5(fun: fn(a, b, c, d, e) -> f) -> fn(a) ->
fn(b) -> fn(c) -> fn(d) -> fn(e) -> f``````

Takes a function with arity five and returns a curried equivalent.

## curry6

</>
``````pub fn curry6(fun: fn(a, b, c, d, e, f) -> g) -> fn(a) ->
fn(b) -> fn(c) -> fn(d) -> fn(e) -> fn(f) -> g``````

Takes a function with arity six and returns a curried equivalent.

## flip

</>
``pub fn flip(fun: fn(a, b) -> c) -> fn(b, a) -> c``

Takes a function that takes two arguments and returns a new function that takes the same two arguments, but in reverse order.

## identity

</>
``pub fn identity(x: a) -> a``

A function that always returns its input value.