sml中的递归数据类型

时间:2012-10-25 17:35:55

标签: recursion sml smlnj abstract-data-type recursive-datastructures

有没有办法为整数定义数据类型。即0,1,2,......不为零,一,......单独。

我想定义整数的集合。使用0,n,n + 1进行递归。 我尝试过这样的事情:datatype nat = 0 | n | n + 1。但是显然不能工作,因为它不能将0视为整数对吗?

我将不胜感激。

1 个答案:

答案 0 :(得分:3)

由于这组自然数是无穷无尽的,你无法枚举所有的情况。

您可以通过Peano numbers概念性地表示自然数字:

datatype peano = Zero | Succ of peano

数据类型非常简单,它只定义0并确保每个自然数都有后继数。例如,2实际上表示为Succ (Succ Zero)

fun count Zero = 0
  | count (Succ p) = 1 + count p

使用类似的技巧,您可以使用自然数字构建addsubmult函数。