【发布时间】:2013-10-19 11:10:47
【问题描述】:
Knights of the Lambda Calculus 徽标的无穷大写为(Y F) = (F (Y F))
这个lisp代码是一样的吗,也代表无穷大吗?
(Y (λ (F) (Y F)))
【问题讨论】:
-
在您的代码中,您显示
Y已使用但未定义。它的定义是什么? -
@WillNess 它是 Y Combinator。
-
请问它的定义是什么?你的意思是和
Y F = F (Y F)一样吗?因为 that 不是 lambda 表达式,而您在 lambda 表达式中使用它。 Lambda 演算没有定义,这就是为什么他们使用大写字母 Y 表示它应该用 lambda 表达式 for Y 替换。这也意味着你不应该在那里使用大写F,而是使用常规f. -
在@dsm 答案中查看 Rosetta Code 中的方案实现。而且我的代码不是 lambda 演算,它的 lisp 代码
λ可以写成lambda。 -
@WillNess 我没有定义
Y,因为众所周知,就像我写(! 10)并且没有定义阶乘函数一样。
标签: lambda lisp lambda-calculus infinity y-combinator