Haskell

[Haskell] Record syntax

2016-03-04  本文已影响24人  何幻

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"
上一篇 下一篇

猜你喜欢

热点阅读