我学习演算但我似乎无法了解编码数字0。

如何为“函数,它在功能和第二值,并应用所述函数的零时刻的参数”零?是否有任何其他的方式来编码零?可以在这里谁能帮助我编码0?

有帮助吗?

解决方案

A“函数,它在功能和第二值,并应用所述函数的自变量的零时刻”,当然,不是零。这是零的编码。当你处理普通的演算,你必须编码以某种方式数量(以及其他原始类型),并有决定为这些类型的一些要求。例如,对于自然数一个要求就是要能加1,给定数量,另一个是能够从更大的数字区分零(如果你想了解更多,请认准“皮亚诺算术”)。流行的编码是达里奥报给你这两个东西,并且它也代表通过做一些事情(编码为f参数)函数的整数N N倍 - 这是一种用土黄一种自然的方式

有其它的编码是可能的 - 例如,一旦你可以表示列表,可以表示N作为N项的列表。这些编码具有它们的优点和缺点,但高于一个是目前最流行的之一。

其他提示

请参阅维基百科

0 ≡ λf.λx. x
1 ≡ λf.λx. f x
2 ≡ λf.λx. f (f x)
3 ≡ λf.λx. f (f (f x))
...
n ≡ λf.λx. fn x

如果你学会了演算,你可能已经知道,λxy.y的 ARG1 的* ARG2 *将减少的 ARG2 的,因为x被替换无关,和余数(λy.y)是恒等函数。

您可以通过许多其他方式写零(即拿出不同的约定),但也有很好的理由使用λxy.y.举例来说,你要零成为第一个自然数,因此,如果您将后继功能它,你就会得到1,2,3等使用功能λabc.b(ABC),你会得到λxy.x(Y ),λxy.x(X(Y)),λxy.x(X(X(Y)))等,换句话说,会得到一个整数字系统。

此外,要零到能够相对于另外的中性元素。与我们的后继函数S:=λabc.b(ABC),我们可以定义名词 + * M *为名词取值,即名词的次后继功能的应用程序来的。我们的零只λxy.y满足这个,无论0 S 秒0减小到

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top