Functor
関手
DEFINITION
圏論における **「圏の間の構造を保つ対応」** です。圏 $\mathcal{C}$ から圏 $\mathcal{D}$ への関手 $F: \mathcal{C} \to \mathcal{D}$ は、$\mathcal{C}$ の各対象 $X$ に $\mathcal{D}$ の対象 $F(X)$ を、各射 $f: X \to Y$ に射 $F(f): F(X) \to F(Y)$ を割り当てます。ただし合成と恒等射を保つ必要があります($F(g \circ f) = F(g) \circ F(f)$、$F(\mathrm{id}_X) = \mathrm{id}_{F(X)}$)。これは「異なる数学的世界の間で構造を翻訳する装置」であり、代数的トポロジーで空間に群を割り当てるホモロジー・ホモトピー関手、表現論で群に線型表現を割り当てる関手など、数学のあらゆる場面で現れます。Haskell などの関数型プログラミング言語では、`map` 操作を持つコンテナとして実装されており、`map :: (a -> b) -> f a -> f b` という型はそのまま関手の定義です。
§01 押さえるべき要点
- 対象 → 対象、射 → 射 の二段の対応
- 合成と恒等射を保つ(公理)
- 共変関手と反変関手(射の向きが反転するか否か)
- 表現可能関手 $\mathrm{Hom}(X, -)$ は Yoneda の補題の主役
- Haskell の Functor 型クラスは数学的関手の特殊例