func v0.4.1 Func.Function

Functions for function.

Example

import Func.Function
{:ok, pid} = Agent.start_link(always(1))
state = Agent.get(pid, id())

Summary

Functions

The function which always returns the arg

Composition function. Compose functions

Constant function. It always returns first argument

iex> Func.Function.curry(&(&1 + &2)).(1).(2)

3
iex> Func.Function.curry(&(&1 + &2 + &3)).(1).(2).(3)
6

Flip and curry function

Flip function

Identity function. It always returns its argument

iex> Func.Function.uncurry(fn x -> fn y -> x + y end end).(1, 2)

3

Applys arguments to curried function

Functions

always(val)
always(any) :: (... -> any)

The function which always returns the arg.

iex> Func.Function.always(1).()
1
compose(f, g)
compose((... -> any), (... -> any)) :: (... -> any)

Composition function. Compose functions.

iex> Func.Function.compose(&String.to_integer/1, &Integer.to_string/1).(1)
1
const(val)
const(any) :: (... -> any)

Constant function. It always returns first argument.

iex> Func.Function.const(1).(2)
1
curry(fun)
curry((... -> any)) :: (... -> any)
iex> Func.Function.curry(&(&1 + &2)).(1).(2)
3
iex> Func.Function.curry(&(&1 + &2 + &3)).(1).(2).(3)
6
curry_flip(func)
curry_flip((... -> any)) :: (... -> any)

Flip and curry function.

iex> Func.Function.curry_flip(&-/2).(1).(2)
1
flip(func)
flip((... -> any)) :: (... -> any)

Flip function.

iex> Func.Function.flip(&-/2).(1, 2)
1
id()
id() :: (... -> any)

Identity function. It always returns its argument.

iex> Func.Function.id().(1)
1
uncurry(fun)
uncurry((... -> any)) :: (... -> any)
iex> Func.Function.uncurry(fn x -> fn y -> x + y end end).(1, 2)
3
uncurry(fun, args)
uncurry((... -> any), [any]) :: any

Applys arguments to curried function.

iex> curried = fn x -> (fn y -> (fn z -> x + y + z end) end) end
...> Func.Function.uncurry(curried, [1, 2, 3])
6