无法推导出 lambda 表达式 λx.λy.x(xy) 的数字表示(教会编码)
can't deduce the numeral representation (church encoding) of a lambda expression λx.λy.x(xy)
我有一个 lambda 表达式:λx.λy.x(xy)
,我应该推断它的整数表示。我已经阅读了很多关于教会编码和教会数字的内容,但我找不到数字是什么。你能用 3 岁的孩子能理解的方式向我解释一下吗?或者让我参考比维基百科更好的资源?
整数的教会编码如下:
"0" ≡ (λf.(λx.x))
:把(λf.(λx.x))
想成意思:给定一个函数f
和一个元素x
,结果是x
:就像应用函数 f
零次到 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))))
是数字 2
的 Church 编码(当然使用 alpha-equivalence)。
wikiped article其实已经很清楚了。你有什么不明白的?
我有一个 lambda 表达式:λx.λy.x(xy)
,我应该推断它的整数表示。我已经阅读了很多关于教会编码和教会数字的内容,但我找不到数字是什么。你能用 3 岁的孩子能理解的方式向我解释一下吗?或者让我参考比维基百科更好的资源?
整数的教会编码如下:
"0" ≡ (λf.(λx.x))
:把(λf.(λx.x))
想成意思:给定一个函数f
和一个元素x
,结果是x
:就像应用函数f
零次到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))))
是数字 2
的 Church 编码(当然使用 alpha-equivalence)。
wikiped article其实已经很清楚了。你有什么不明白的?