我有一个 lambda 表达式:λx.λy.x(xy)
,我应该推断它的整数表示。我已经阅读了很多关于教堂编码和教堂数字的具体内容,但我找不到数字是什么。您能否以 3 岁的孩子可以理解的方式向我解释或向我推荐比维基百科更好的资源?
问问题
127 次
1 回答
1
整数的 Church 编码如下:
"0" ≡ (λf.(λx.x))
: 认为(λf.(λx.x))
意义:给定一个函数f
和一个元素x
,结果是x
:就像将函数应用于f
0 次x
。"1" ≡ (λf.(λx.(fx)))
: 认为(λf.(λx.(fx)))
意义:给定一个函数f
和一个元素x
,结果是(fx)
: 应该被认为是适用f
于x
或者,在更标准的数学符号中,如f(x)。"2" ≡ (λf.(λx.(f(fx))))
: 认为(λf.(λx.(f(fx))))
意义:给定一个函数f
和一个元素x
,结果是(f(fx))
: 这应该被认为适用f
于x
两次或更标准的数学符号,如f(f(x))。"3" ≡ (λf.(λx.(f(f(fx)))))
: 认为(λf.(λx.(f(f(fx)))))
意义:给定一个函数f
和一个元素x
,结果是(f(f(fx)))
: 这应该被认为适用f
于x
三次,或者用更标准的数学表示法,如f(f(f(x)))。
我希望你能看到模式(以及背后的逻辑)。在您的情况下,(λx.(λy.(x(xy))))
是数字的 Church 编码2
(当然,使用 alpha-equivalence)。
维基百科的文章实际上很清楚。你有什么不明白的?
于 2016-01-28T15:47:05.867 回答