【发布时间】:2012-10-25 17:35:54
【问题描述】:
有没有办法为整数定义数据类型。即 0,1,2,... 不是零,一个,... 单独。
我想定义一组整数。 bu 使用 0, n,n+1 和递归。 我尝试过这样的事情:数据类型 nat=0|n|n+1 。但是几乎很明显不起作用,因为它不将 0 识别为整数,对吗?
我将不胜感激。
【问题讨论】:
标签: recursion sml smlnj abstract-data-type recursive-datastructures
有没有办法为整数定义数据类型。即 0,1,2,... 不是零,一个,... 单独。
我想定义一组整数。 bu 使用 0, n,n+1 和递归。 我尝试过这样的事情:数据类型 nat=0|n|n+1 。但是几乎很明显不起作用,因为它不将 0 识别为整数,对吗?
我将不胜感激。
【问题讨论】:
标签: recursion sml smlnj abstract-data-type recursive-datastructures
由于自然数的集合是可数无限的,所以你不能枚举所有的情况。
你可以用Peano numbers在概念上表示自然数:
datatype peano = Zero | Succ of peano
数据类型很简单,它只定义了0,并保证每个自然数都有一个后继。例如,2实际上表示为Succ (Succ Zero)。
fun count Zero = 0
| count (Succ p) = 1 + count p
使用类似的技术,您可以像使用自然数一样构建add、sub、mult 函数。
【讨论】: