Haskell中非整数的整数居民

npo*_*cop 11 haskell types integer infinity

Haskell中的Peano自然数data Peano = Zero | Succ Peano被定义为非常奇怪的野兽:除了简单的自然和底值之外,其中还有一个"无限整数" inf = Succ inf.

还有其他Peano类型的居民吗?这个无限号码有名字吗?

C. *_*ann 17

他们并不陌生,他们只是coinductive土黄.抛开⊥的问题,我们可以将此处的自然数类型定义为由其组成Zero,或Succ应用于自然数.归纳定义将假设一个明确定义的结束,即任何数字都从Zero构造函数开始.coinductive定义只是说,给定任何自然数,它将是Zero或者我们可以移除外部Succ以获得另一个自然数.

看似微妙的区别在于,共同定义包括无穷无尽的一系列Succ构造函数,它们实际上是无限的真实表现.这是有意义的,因为虽然归纳定义是关于确保递归将达到明确定义的基本情况,但是共同定义是关于确保总是有明确定义的下一步可用.

由于数据构造函数是懒惰的,因此在Haskell中,coinductive解释很方便并且在某些方面是强制性的.

所以,这个无穷大的数字实际上是无穷大,或ω,如果你需要指定哪个无限,正如Daniel Fischer所说.它只是一个共鸣无限,就像更常见的无限列表一样.

如果你通过他们的教会编码来考虑自然数,有限数字意味着"迭代这个函数N次"; ω表示"无限期地迭代此函数".

  • 这通常被称为"扩展自然数",并且它经常以非常简单的方式出现:http://ncatlab.org/nlab/show/extended%20natural%20number%20system,http://golem.ph.utexas.埃杜/分类/ 2008/12/the_status_of_coalgebra.html (2认同)

Dan*_*her 10

好吧,有Succ _|_,Succ (Succ _|_)等等.你可能已经包含了那些"底层价值".inf = Succ inf通常被称为infinityomega(作为自然数的序数).