Functor
は、共変にマップされるf :: * -> *
型のクラスです。関数をデータ構造体にマッピングすると、構造体自体を変更せずに構造体のすべての要素に関数が適用されます。
Functorは、ある価値のためのコンテナ、または計算コンテキストと考えることができます。例はMaybe a
または[a]
。 Typeclassopediaの記事は、 Functorsの背後にある概念を書き上げています。
実際のFunctorとみなされるためには、次の2つの法律を遵守しなければなりません。
fmap id == id
fmap (f . g) = (fmap f) . (fmap g)