Function 如何用lambda术语定义带有Church数字的函数?
如何用lambda项表示以下函数 f(n)=T如果n!=0 如果n=0,则为F n代表一个教堂数字 我知道0:=λf.λx.x,其中λx.x是恒等函数,所有其他自然数都可以用n:=λf.λx.f(f…(f x))表示,其中包含的f n是0项的n倍。例如,3:=λf.λx.f(f(f x)) 但是我怎样才能为上面的函数导出一个有效的λ-项呢?我想我也需要一个y来得到T/F,因此我可以用λF来表示n(λxy.fxy),对吗?但是F和T呢?以下是上述函数的右λ-项吗?λf.(λxy.fxy(yFT)),其中T=λxy.x和f=λxy.y?否,给出了Function 如何用lambda术语定义带有Church数字的函数?,function,lambda-calculus,computation-theory,church-encoding,computability,Function,Lambda Calculus,Computation Theory,Church Encoding,Computability,如何用lambda项表示以下函数 f(n)=T如果n!=0 如果n=0,则为F n代表一个教堂数字 我知道0:=λf.λx.x,其中λx.x是恒等函数,所有其他自然数都可以用n:=λf.λx.f(f…(f x))表示,其中包含的f n是0项的n倍。例如,3:=λf.λx.f(f(f x)) 但是我怎样才能为上面的函数导出一个有效的λ-项呢?我想我也需要一个y来得到T/F,因此我可以用λF来表示n(λxy.fxy),对吗?但是F和T呢?以下是上述函数的右λ-项吗?λf.(λxy.fxy(yFT))
n
的术语。它是一个需要两个参数的函数,一个是f
,一个是z
:
isZero n=n(;;f,一个函数,应为x
;或(f(f…(f x…)的结果)
λx。
但我们总是知道我们想要它回报什么:它是:
F;;错误,因为n不是0
)
(;;在n为………0的情况下,首字母x!
;;所以我们知道我们想要它是什么,如果n是0:
是的,因为n是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
....
非常感谢。因为我在寻找一个函数,如果n为0,则返回F,否则,我只需要在你的解决方案中切换T和F。啊,太好了。所以它是notZero
then.)