Skip to content

基本的なコンビネータ

Tuber においては基本的なコンビネータ i, k, s そして ι (iota) が定義済みです。

Identity i

i 関数は引数を 1 つ取り、引数をそのまま返します。

i(x) # => x

Constant k

k 関数は引数を 2 つ取り、1 つめの引数を捨て 2 つめの引数をそのまま返します。

k(x, y) # => y

Substitution s

s 関数は引数を 3 つ取り、下記のように振る舞います。

s(x, y, z) # => x(z, y(z))

iota ι

ι 関数は下記のように定義されています。

ι(f) = f((x, y, z) => x(z, y(z)), (x, y) => x)

ι はそれ自身を組み合わせることで i, k, s と同等の式を引き出せることが特徴です。

ι(ι) # この式は i と同等に振る舞う
ι(ι(ι(ι))) # この式は k と同等に振る舞う
ι(ι(ι(ι(ι)))) # この式は s と同等に振る舞う