1

如何用 lambda 项表示以下函数?

如果 n != 0,则 f(n) = T。如果 n = 0,则为 F。

n 代表教堂数字。

我知道 0 := λf.λx.x 其中 λx.x 是恒等函数,所有其他自然数可以用 n := λf.λx.f (f ... (fx)) 表示,其中包含 fn 倍比 0 项。例如 3 := λf.λx.f (f (fx))。

但是我怎样才能为上面的函数推导出一个有效的 λ 项呢?我想我也需要获得 T/F。因此我可以用 λf.(λxy.fxy) 来表示数字 n,对吧?但是F和T呢?以下是上述函数的正确 λ 项吗?λf.(λxy.fxy(yFT)) 其中 T=λxy.x 且 F=λxy.y?

4

1 回答 1

2

不,你被赋予n. 它是一个需要两个参数 anf和 a的函数z

isZero n = n ( ;; f, a function, expecting x
               ;;       or the result of (f (f ... (f x) ...))
               λx.
               ;; but we know what we want it to return, always: it is:
                  F    ;; false, for n is _not_ 0
             )
             ( ;; the initial x, in case n is ......... 0!
               ;; so we know what we want it to be, in case n is 0:
               T       ;; true, for n _is_ 0
             )

因此

isZero = λn.n(λx.F)T

如果n为 0,isZero n将返回T;否则,F

{0}(λx.F)T = T
{1}(λx.F)T = (λx.F)T = F
{2}(λx.F)T = (λx.F)((λx.F)T) = F
{3}(λx.F)T = (λx.F)((λx.F)((λx.F)T)) = F
....
于 2020-12-22T09:20:09.557 回答