【发布时间】:2012-02-11 01:52:54
【问题描述】:
我一直在阅读的计算机程序的结构和解释一书通过定义零和增量函数来介绍教堂数字
zero: λf. λx. x
increment: λf. λx. f ((n f) x)
这对我来说似乎很复杂,我花了很长时间才弄清楚并推导出一个 (λf.λx. f x) 和两个 (λf.λx. f (f x))。
用这种方式编码数字不是更简单吗,零是空的 lambda?
zero: λ
increment: λf. λ. f
现在很容易推导出一个 (λ. λ) 和两个 (λ. λ. λ),以此类推。
这似乎是一种用 lambda 表示数字的更直接、更直观的方式。这种方法是否存在一些问题,因此有充分的理由说明教堂数字以它们的方式工作吗?这种方法是否已经得到证实?
【问题讨论】:
-
我不确定我看到这个问题有什么问题。谁能解释一下?
-
我没有投过票,但可能人们觉得它更适合 ctheory 什么的?
-
CSTheory 用于研究级别的问题。这个可能太初级了。
-
我认为可以对标题进行清理,使其听起来更客观,并与帖子的其余部分保持一致,这将使它成为一个整体上更好的问题。
-
我同意这不属于 CS Theory SE,但它也不完全是代码的特定编程问题。即便如此,对于我的 +1 来说已经足够了。
标签: language-agnostic sicp lambda-calculus church-encoding