繁体   English   中英

如何用 lambda 术语中的教堂数字定义 function?

[英]How to define a function with Church numerals in lambda-terms?

如何用 lambda 术语表达以下 function ?

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

n 代表教堂数字。

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

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

不,你得到n的术语。 它是一个 function,需要两个 arguments,一个f和一个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
....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM