我是 SML 的新手,我想确保自己真正了解基础知识。SML 中的类型和数据类型有什么区别,什么时候使用?
问问题
7828 次
3 回答
24
type
声明只是为现有类型提供另一个名称。声明type t = int * int
只是意味着您现在可以编写t
而不是int * int
- 它实际上并不提供任何功能。
datatype
定义允许您通过引入新的数据构造函数来创建全新的类型。数据构造函数是用于创建和模式匹配值的关键字和符号,例如列表类型的nil
和::
。这些标识符没有什么特别之处。您可以像这样轻松地自己定义它们:
datatype 'a list = nil | :: of 'a * 'a list
于 2013-11-06T10:14:49.333 回答
3
sml 中的数据类型可以有不止一种类型,例如
datatype a = SomeType | SomeOtherType
您可以在类型检查时使用它们,例如
fun doThings (var : a) : bool =
case var of
(SomeType) => true
(SomeOtherType) => false
于 2013-11-06T10:13:43.210 回答
1
你可能会这样想:类型用于不透明和原子类型,而datatype
用于具有构造函数的类型,因此可以解构,主要是在表达式的模式匹配中。
如果 A 实现了不透明类型(在签名中声明并在实现签名的结构中定义为 a ),则Adatatype
也可以公开简单的类型视图。type
datatype
原子类型int
和word
在某些方面可能被视为可解构类型,就像 Peano 对数字的算术解释一样,但 SMLint
和word
不那么好称为real
的 是原始类型。
于 2014-02-04T19:38:45.403 回答