Real World Haskell - 第3章 Part1 Defining a new data type

Real World HaskellHaskell を継続的に勉強中。

Defining Types, Streamlining Functions

Chapter 3. Defining Types, Streamlining Functions

Defining a new data type
data BookInfo = Book Int String [String]
                deriving (Show)
myInfo = Book 9780135072455 "Algebra of Programming"
         ["Richard Bird", "Oege de Moor"]
  • 新しいデータ型は data キーワードで定義する
  • この例の BookInfo は type constructor と呼ぶ
    • type name 同様、type constructor も大文字で始めるべし
  • この例の Book は value constructor (data constructor) と呼ぶ
    • value constructor も大文字で始めるべし
  • この例の Int String [String] は components (fields) と呼ぶ
  • 3-tuple でも同様の型は定義できるが、たまたま構造が同じデータを区別して扱えない
    • 例えば BookInfo だけでなく MagazineInfo も扱いたい場合
data MagazineInfo = Magazine Int String [String]
                    deriving (Show)
  • value constructor は新しい型を返す関数として考えることができる
  • type constructor と value construcotor は同じ名前にしてよい
    • 同じ名前にすることは normal

参考