使用data
关键字来定义一种新的数据类型(data type
):
data StudentInfo = Student Int String
deriving (Show)
StudentInfo
是type constructor
,也是这种新type
的名字,所以首字母必须大写。
Student
是value constructor
(有时也称之为data constructor
)的名字,它的首字母也必须大写(可以把它看做是首字母大写的函数),作用是用来创建StudentInfo
这种type
的值。在Student
后面的Int
和String
是StudentInfo
这种type
的component(
有时也称作field
或parameter
)
,其作用类似于其它编程语言中结构体成员。
type constructor
只用在type declaration
和type signature
中,而value constructor
只用在实际的代码中。因此二者的使用是相互独立的,可以让type constructor
和value constructor
拥有相同的名字,实际编码中基本也是这样做的:
data Student = Student Int String
deriving (Show)
也可以使用type
关键字为已有的类型定义一个同义词(type synonym
):
type SI = StudentInfo
type synonym
也可以为一个冗长的类型取一个短名字,举例如下:
type SI = (Int, String)