【问题标题】:How does Jan Willem Klop's "(L L L...)" Y combinator work?Jan Willem Klop 的“(L L L...)”Y 组合器是如何工作的?
【发布时间】:2010-09-11 19:06:52
【问题描述】:
我理解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 = λ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))
这是如何工作的?
【问题讨论】:
标签:
functional-programming
lisp
computer-science
【解决方案1】:
定点组合器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)
其他术语tj 和uj 实际上并未“使用”。你可以看到 Klop 的L 有这种形式(尽管他使用了所有ti 都是L 这样第二个xi 也可以是任何其他xj)。