Haskell のIOモナドの分かりにくさに対する批判に対し、フィリップ・ワドラーが、「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」と答えたそうだ。これで、すんなり納得するのはよほど圏論に詳しい人だろう。 管理人としては、圏論抜きで Haskell というプログラム言語を使えればそれが一番ありがたいのだ。しかし、最低でもモナドや圏論やモノイド対象が何を指しているのかくらいは知っておきたい。そこで、『モナドへの近道・Haskell からの寄り道』(中村翔吾著)というレポートを道案内にして、少なくともモナドというのが何を指しているのかを探索してみた。 まず、圏論の「圏」という言葉が何を指しているかだ。端的に言うと圏とは、対象と射からなる構造だ。集合と写像なら少しは馴染みがあるので、集合に例えると、対象とは集合のことで、射とは写像のことだ。集合 a と集合 b があり、そ
![単なる自己関手の圏における... (1) 圏とは | tnomuraのブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/3295a1ceb2c98e1a825760f4ebf73aff51e7df4b/height=288;version=1;width=512/https%3A%2F%2Fpds.exblog.jp%2Flogo%2F1%2F200504%2F30%2F98%2Fd003829820050508181526.jpg)