数学カフェのLTで話す予定でしたが、使う機会がなくなったので公開します。 Haskellにおけるモナドとは HaskellではMonadという型クラスでモナドを表現しています。この型クラスは return :: a -> m a 、 join :: m (m a) -> m a 、そして fmap においてモナドが表現されています。色んな人が色んな場で説明していることですから、今さらここで議論を掘り返す必要はないでしょう。 モナドには []、Maybe、State s、Cont r、Reader r、Writer w、IO、などがあります。しかし、みなさんはそれで満足でしょうか? そんなモナドで大丈夫ですか? Haskellでもっとモナド モナドをさらにこじらせた人は、 Free モナドや Codensity モナドなどに手を出すでしょう。これらは大変便利なものですが、その珍しさ故これまた