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

时间:2008-09-21 16:01:47

标签: functional-programming lisp computer-science

我理解what a Y Combinator is,但我不理解Wikipedia page中的“小说”组合子的这个例子:

 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))

这是如何运作的?

1 个答案:

答案 0 :(得分:13)

定点组合子C的本质是C f缩减为f (C f)。只要这样做,你对C所采取的操作无关紧要。而不是

(\y f. f (y y f)) (\y f. f (y y f))

你也可以采取

(\y z f. f (y y y f)) (\y z f. f (y y y f)) (\y z f. f (y y y f))

基本上你需要一些形式

C t1 t2 ... tN

某些ti = C

i
C = \x1 x2 .. xN f. f (xi u1 u2 ... xi ... u(N-1) f)

其他条款tjuj实际上并未“使用”。你可以看到Klop的L有这种形式(尽管他使用的所有ti都是L这样,第二个xi也可以是任何其他xj {{1}} })。