数学の加法の交換法則により、全ての$x,y$に対して$$ x+y=y+x$$がなりたつ。加算を関数$A$で表すと、全ての$x,y$に対して$$A(x,y)=x+y$$と表記できる。作用素$\textbf{C}$で全ての$f,x,y$に対して$$(\textbf{C}(f))(x,y) = f(y,x)$$と定義すると、交換法則は、単純に$$\textbf{C}(A)=A$$と記述できる。$\textbf{C}$は関数を入力として関数を返す作用素(汎関数あるいは超関数)であり、コンビネータと呼ばれる。
他にもいろいろな種類のコンビネータがある。
$(\textbf{B}(f,g))(x) = f(g(x))$
$(\textbf{B}’(f,g))(x) = g(f(x))$
$\textbf{I}(f)=f$ 恒等作用素
$(\textbf{K}(a))(x)=a$ 定数関数を生成する
$(\textbf{S}(f,g))(x)=f(x,g(x))$ 強い合成作用素
$(\textbf{W}(f))(x)=f(x,x))$ 二重化あるいは対角化
以下のように変数(関数も含む)$X,Y,Z$に対して還元(reduction)が行われる:
$\textbf{B}XYZ = X(YZ)$
$\textbf{B}’XYZ=Y(XZ)$
$\textbf{I}X=X$
$\textbf{K}XY=X$
$\textbf{S}XYZ=XY(YZ)$
$\textbf{W}XY=XYY$
計算の適用は項$X,Y,Z,W$とすると、
$XYZW=((XY)Z)W$のように左から計算されていく。適応順序が自明であればカッコ()は省略される。
参考