予は如何にしてMonadophobiaを克服しつつあるか Monadについて実は数日前にようやく理解しはじめた。思えば10年前に最初にそれが函手(functor)だって教えてくれれば、少なくとも簡単なイメージ形成と基礎的な使い方はすぐに理解できたのに、と思う。HaskellのMonadを理解するために圏論を理解する必要はありません、ってのは本当かもしれないが、函手だって言われれば直観的にはすぐに理解できる。要は fmap はHaskellの函数全体が作る圏からその部分圏への函手です、fmapで函数の構造を保存したまま部分圏の函数が得られますよ、というか函手の条件を満たすようなfmapを提供することによってそういう構造保存的な部分圏を提供するんですよ、というだけのことである。ところが、部分圏の射自体がHaskellの圏の射だから、当の函手が自分自身に適用されてm (m a)のようにMonad