如何解决如何用 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 举报,一经查实,本站将立刻删除。