SML:类型和数据类型之间的差异

Hor*_*ith 14 types sml smlnj

我是SML的新手,我想确保我真正了解基础知识.SML中的类型和数据类型有什么区别,以及何时使用哪个?

Nic*_*nes 18

type声明只是为现有类型指定另一个名称.声明type t = int * int只是意味着您现在可以编写t而不是int * int- 它实际上并不提供任何功能.

datatype定义允许您通过引入新的数据构造函数来创建全新的类型.数据构造函数是用于创建和模式匹配值的关键字和符号,例如列表类型nil::.这些标识符没有什么特别之处; 你可以像这样轻松地定义它们:

datatype 'a list = nil | :: of 'a * 'a list
Run Code Online (Sandbox Code Playgroud)

  • 一个nit:`nil`和`::`是_data_ constructors.类型构造函数是带有参数的_type_,例如`list`本身. (3认同)