みどりねこ日記

よくわからないけど、頑張りますよ。

Haskellのモナド(6)

Functorは関数fmapを適用できる型です。fmapは、リストでいうmapと同じようなものです。

圏論によると、すべてのモナドは定義上Functorでもあります。しかし、GHC(事実上のHaskell標準処理系)はそれらを別として捉えており、MonadクラスはFunctorクラスとなんの関係もありません。未来のバージョンのHaskellではおそらく変わって、すべてのMonadはそれぞれ独自のfmapを持つことになるでしょう。しかしそれまでは、モナドをFunctorとして扱いたい時はMonadとして、そしてFunctorとしての両方のインスタンスを別に作らなくてはなりません。