[英]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.