型クラス
Java等のクラスとは違い、特定の型コンストラクタの集合を定義する。
多相型に制約をつけるためのもの
- アドホック多相: 制約のついた多相性
- パラメータ多相: 制約の無い多相性
型クラスの継承
class Eq a where -- class宣言 (==), (/=) :: a -> a -> Bool -- クラスメソッドの型宣言 x == y = not (x /= y) x /= y = not (x == y) -- これ以上の定義はインスタンス側に任せる class (Eq a) => Ord a where -- 継承 (略) data Anchor = A String String instance Eq Anchor where -- instance宣言 (A u l) == (A u' l') = (u == u') '' (l == l') data Anchor = A String String deriving Eq -- 実装が自明な場合はderiving宣言で代用できる