ファンクター(Functor)
mapできるデータ構造。「中身」に関数を適用しても「容れ物」は変えない map/fmap を実装している。
圏論に由来する。法則は fmap id == id と fmap (f . g) == fmap f . fmap g の二つだ。リスト、Maybe/Optional、Either、木、Promise/Futureはどれもファンクターである。言語の型の圏上の自己関手にあたる。ここにアプリカティブ(pure と <*> を追加)、さらにモナド(bind を追加)が積み上がっていく。Haskell、Scala、Rust(Iterator::map 経由)、関数型JavaScriptがこの概念を多用する。