Haskell提供了record syntax脊奋,可以在定義類型的同時(shí),為每個(gè)字段指定讀取器疙描。
例如:
data Book = BookID {id :: Int}
| BookName {englishName :: String, chineseName :: String}
deriving Show
其中诚隙,Book
類型指定了兩個(gè)值構(gòu)造器,BookID
和BookName
<u></u>BookID
值構(gòu)造器有一個(gè)字段起胰,它的類型是Int
久又,讀取器是函數(shù)id
<u></u>BookName
值構(gòu)造器有兩個(gè)字段,它們的類型都是String
,讀取器分別是函數(shù)englishName
和chineseName
我們可以用以下兩種方式來創(chuàng)建一個(gè)Book類型的值
> BookName "1" "2"
BookName {englishName = "1", chineseName = "2"}
> BookName {chineseName = "2", englishName = "1"}
BookName {englishName = "1", chineseName = "2"}
讀取器是一個(gè)函數(shù)地消,類型如下:
chineseName :: Book -> String
例子:
> chineseName $ BookName "1" "2"
"2"