无法推导出 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其实已经很清楚了。你有什么不明白的?