我正在寻找的是以其他形式重写 Y 组合器......
原始符号:
Y := λf.(λx.f(xx))(λx.f(xx))
首先,通过指出右侧表达式是一个应用程序来减少混淆的符号:
Y := λfx.f(xx)[x:=λx.f(xx)]
这个对吗?
那么,这些是 Y 的所有功能等价物吗:
包括M := λf.ff
(知更鸟)
Y := λf.λx.M(f(xx)) [x:=λx.f(xx)]
Y := λfx.M(fxx) [x:=λx.f(xx)]
Y := λfx.f(fMx) [x:=λx.f(xx)]
Y := λfx.M(fMx) [x:=λx.f(xx)]
上述任何(据说)beta 减少到:
Yz -> z(Y z)
问题是这些有效吗?