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