Jan Willem Klop的"(LL L ...)"Y组合器如何工作?

ral*_*ldi 14 lisp computer-science functional-programming

我理解Y Combinator是什么,但我不理解维基百科页面中这个"小说"组合子的例子:

 Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L)

Where:

    L = ?abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r))

这是如何运作的?

mwe*_*den 13

定点组合C器的本质是C f减少到f (C f).只要这样做,你所接受的并不重要C.而不是

(\y f. f (y y f)) (\y f. f (y y f))
Run Code Online (Sandbox Code Playgroud)

你也可以

(\y z f. f (y y y f)) (\y z f. f (y y y f)) (\y z f. f (y y y f))
Run Code Online (Sandbox Code Playgroud)

基本上你需要一些形式

C t1 t2 ... tN
Run Code Online (Sandbox Code Playgroud)

其中ti = C一些i

C = \x1 x2 .. xN f. f (xi u1 u2 ... xi ... u(N-1) f)
Run Code Online (Sandbox Code Playgroud)

其他条款tjuj没有实际"使用".你可以看到Klop L有这种形式(虽然他使用的事实是所有这些ti都是L第二种xi也可以是任何其他形式xj).