by shigemk2

当面は技術的なことしか書かない

自動導出

Haskellは、特定の型クラスのインスタンス宣言を自動導出(derive)する能力を備えている。
自動導出出来る型クラスは、Eq Ord Enum Bounded Show Readである。
自作のデータ型を作るとき、derivingキーワードを使えば、Haskellがこれらの型クラスの文脈で振る舞いを自動導出してくれる。

data Person = Person { firstName :: String
                     , lastName :: String
                     , age :: Int
                     } deriving (Eq)

mikeK   = Person {firstName = "Michael", lastName = "Karoli", age = 53}
holgerC = Person {firstName = "Holger", lastName = "Czukay", age = 75}
damo    = Person {firstName = "DAMO", lastName = "Suzuki", age = 52}

-- *Main> damo == mikeK
-- False
-- *Main> damo == damo
-- True
-- *Main> mikeK == Person {firstName = "Michael", lastName = "Karoli", age = 53}
-- True