微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用 lambda 项中的 Church 数字定义函数?

如何解决如何用 lambda 项中的 Church 数字定义函数?

如何用 lambda 项表达以下函数

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

n 代表教会数字。

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

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

解决方法

不,您给了 n 这个词。这是一个需要两个参数的函数,一个 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
....

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。