Haskell提供了record syntax,可以在定义类型的同时,为每个字段指定读取器。
例如:
data Book = BookID {id :: Int}
| BookName {englishName :: String, chineseName :: String}
deriving Show
其中,Book
类型指定了两个值构造器,BookID
和BookName
<u></u>BookID
值构造器有一个字段,它的类型是Int
,读取器是函数id
<u></u>BookName
值构造器有两个字段,它们的类型都是String
,读取器分别是函数englishName
和chineseName
我们可以用以下两种方式来创建一个Book类型的值
> BookName "1" "2"
BookName {englishName = "1", chineseName = "2"}
> BookName {chineseName = "2", englishName = "1"}
BookName {englishName = "1", chineseName = "2"}
读取器是一个函数,类型如下:
chineseName :: Book -> String
例子:
> chineseName $ BookName "1" "2"
"2"