Yコンビネータいろいろ

Yf=f(Yf)となるYをいろいろなコンビネータで書いたもの

Y=UU

Uxy=y(xxy)を使うとY=UUと書ける
Yf=UUf
=f(UUf)
=f(Yf)

U=S(K(SI))(SII)を使ってYをSKIだけで書くと
Y=S(K(SI))(SII)(S(K(SI))(SII))
使用関数14個

Y=SLL

Lxy=x(yy)を使うとY=SLLと書ける
Yf=SLLf
=Lf(Lf)
=f(Lf(Lf))
=f(Yf)

L=S(S(KS)K)(K(SII))を使ってYをSKIだけで書くと
Y=S(S(S(KS)K)(K(SII)))(S(S(KS)K)(K(SII)))
使用関数19個

Y=SS(S(S(KS)K))(K(SII))

SKIだけで書いたときに短いもの
式の簡単化にB=S(KS)K,M=SII,L=SB(KM)を使っている
Yf=SS(S(S(KS)K))(K(SII))f
=SS(SB)(KM)f
=S(KM)(SB(KM))f
=S(KM)Lf
=KMf(Lf)
=M(Lf)
=Lf(Lf)
=f(Lf(Lf))
=f(Yf)

使用関数11個

Y=SSK(S(K(SS(S(SSK))))K)

SKだけで書いたときに短いもの
括弧の中身をxとおく
Yf=SSKxf
=Sx(Kx)f
=xf(Kxf)
=xfx
=S(K(SS(S(SSK))))Kfx
=K(SS(S(SSK)))f(Kf)x
=SS(S(SSK))(Kf)x
=S(Kf)(S(SSK)(Kf))x
=Kfx(S(SSK)(Kf)x)
=f(S(SSK)(Kf)x)
=f(SSKx(Kfx))
=f(SSKxf)
=f(Yf)

使用関数12個

関数リファレンス

Sxyz=xz(yz) S
Kxy=x K
Ix=x I=SKK
Bxyz=x(yz) B=S(KS)K
Mx=xx M=SII
Oxy=y(xy) O=SI
Lxy=x(yy) L=SB(KM)
Uxy=y(xxy) U=S(KO)M
Yx=x(Yx) Y=UU=SLL