作者noctem (noctem)
看板Ruby
标题Re: [Ruby] recursive lambda
时间Tue Apr 24 09:38:42 2007
※ 引述《godfat (godfat 真常)》之铭言:
: 不过套上一层间接呼叫之後,就可以正常使用了:
: Y = lambda{|f|
: lambda{|x| lazy{f[x[x]]} }[lambda{|x| lazy{f[x[x]]} }]
: }
嗯,这样也蛮漂亮的~
: 那 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) 真让人傻眼!
: 我真想怀疑这是用程式跑出来的结果 O_o
哈哈... 你漏了 L 的定义:
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)
L = \a b c d e f g h i j k l m n o p q s t u v w x y z r .
(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))
(以上用比较简单的语法,
\ 是 lambda, a b c ... 是 lambda 的参数, application 只用空格隔开)
有个 combinator 专家和我解释过,重点在那个 r. 在 L 的参数之中 r
被偷偷提到最後面,同时他是 combinato"r" 的最後一个字母。其他都是
装饰而已。不过细节我就忘了... 谁要来解说吗? :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.192.157.71
1F:推 godfat:我现在才发现那是 this is a fixed point...@@ 以为没规律 04/24 20:53
2F:→ godfat:这样应该很清楚地表达了有无穷多个 O_o 04/24 20:53