簡體   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