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