Quark.BCKW (Quark v2.3.2) View Source

The classic BCKW combinators. A similar idea to SKI, but with different primitives.

Link to this section Summary

Functions

b()

Normal (binary) function composition

c()

Reverse (first) two arguments (flip). Aliased as flip.

w()

Apply the same argument to a functon twice

Link to this section Functions

Normal (binary) function composition

Examples

iex> sum_plus_one = b(&(&1 + 1), &Enum.sum/1)
iex> [1,2,3] |> sum_plus_one.()
7

Specs

b((... -> any()), (... -> any()), any()) :: any()

Reverse (first) two arguments (flip). Aliased as flip.

Examples

iex> c(&div/2).(1, 2)
2

iex> reverse_concat = c(&Enum.concat/2)
...> reverse_concat.([1,2,3], [4,5,6])
[4,5,6,1,2,3]

iex> flip(&div/2).(1, 2)
2

Specs

c((... -> any())) :: (... -> any())

See Quark.BCKW.c/1.

See Quark.SKI.k/0.

See Quark.SKI.k/1.

See Quark.SKI.k/2.

Apply the same argument to a functon twice

Examples

iex> repeat = w(&Enum.concat/2)
iex> repeat.([1,2])
[1,2,1,2]

iex> w(&Enum.zip/2).([1,2,3])
[{1, 1}, {2, 2}, {3, 3}]

Specs

w((... -> any())) :: any()