Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/function/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何用lambda术语定义带有Church数字的函数?_Function_Lambda Calculus_Computation Theory_Church Encoding_Computability - Fatal编程技术网

Function 如何用lambda术语定义带有Church数字的函数?

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))

如何用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?

否,给出了
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.)