『阿男的Haskell进阶学习笔记』*02 type
关键字*
我们这次介绍两个关键字,分别是type
和newtype
。
首先是type
,这个关键字可以允许我们来把一种data type给做一下命名。比如我们常用的String
,实际上就是[Char]
的代名词,我们可以通过ghci
的:i
命令验证这一点:
Prelude> :i String
type String = [Char] -- Defined in ‘GHC.Base’
从上面的输出可以看到String
就是[Char]
的代名词,Haskell是通过type
来完成这种命名的。我们还可以使用type
来定义自己的类型名称,下面是例子:
Prelude> type Name = String
Prelude> :i Name
type Name = String -- Defined at <interactive>:6:1
可以看到我们定义了一个新的type叫做Name
。接下来我们可以用用看这个新定义的type:
Prelude> data Person = Person { name :: Name }
Prelude> peter = Person { name = "Peter" }
Prelude> name peter
"Peter"
如上面的代码所示,我们定义了叫做Person
的数据类型,它的constructor接受一个Name
类型的参数,而这个Name
类型实际上就是String
类型,因此我们给name
赋值"Peter"完全没有问题,然后最后我们用record syntax^1帮我们创建的name
函数取得了这个赋值。