Category
単位元と結合演算を持つ最も基本的な構造としてMonoidがあり、そこに関数適用のできるパラメータを追加するとApplicativeになる。さらにパラメータを追加し、しりとりのように結合できるようにしたのがCategoryだ。 code:haskell
class Category cat where
id :: cat a a
(.) :: cat b c -> cat a b -> cat a c
関数型->が代表的なインスタンスとなるほか、型の同値性を表す型:~:や、newtype Const' a b c = Const' { getConst' :: a }なども自明なインスタンスが定義できる。