[Haskell] Record syntax

Haskell提供了record syntax,可以在定义类型的同时,为每个字段指定读取器。
例如:

data Book = BookID {id :: Int}
         | BookName {englishName :: String, chineseName :: String}
         deriving Show

其中,Book类型指定了两个值构造器,BookIDBookName
<u></u>BookID值构造器有一个字段,它的类型是Int,读取器是函数id
<u></u>BookName值构造器有两个字段,它们的类型都是String,读取器分别是函数englishNamechineseName

我们可以用以下两种方式来创建一个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"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容