圏論に案内される
『圏論の道案内』を読んだ。本稿はその読書メモである。
コンピュータ・ソフトウェア関係の人間であれば、だいたいHaskellのモナドから圏論に触れるのではないか。御多分に洩れず私もその一人だった。
私はHaskellが好きだし関数プログラミングは素晴らしいと信じているが、Haskellで仕事をしているプロフェッショナルのプログラマーではない。よって、私がHaskellに対して思っていることは、もしかしたら現場でHaskellで仕事をされている方からすると事実でないことがあるかもしれない。しかし、幾ら何でも「Haskellのモナドを理解するには圏論の知識が必要」はウソだろう。ウソだろうと思うのだが、それに反論するには最低限の圏論の知識は欠かせないだろうと思い、ずっと入門書を求めていた。
そこに出会ったのが、冒頭の書と言うわけだ。
本書は、語り口が平易でサクサク読み進められる箇所が多い。一方で、新たに概念を定義するところも非常に多く(圏論がそういう学問なのだからこれは避けられない)、定義を覚えておくのはかなり大変だった。また、式変形レベルの証明なども出てくるが、それも(決して難しくはないが)煩雑だったりして、なかなか頭の中だけで追うのは大変だった。
第9章でモナドを導入し、続いてHaskellでの利用のされ方が書かれていたのには感動した。圏論のガイドブックでHaskellが直接書かれることは少ないのではないか。また、Haskellの副作用(本書では計算効果 computational effect という単語を使っている)のモナドによる扱いがうまくいっていることの根本が、モナドと自然変換の組み合わせが入れ子になった複数の関数の計算結果を一つに潰してくれる性質にあることに言及されている。これこそが私が知りたかったことであり、本書のこの部分に繋げてくださった著者の努力に感謝したい。
圏論に真面目に入門する気はないが、定義に従って式変形できるくらいの数学の素養はあり、モナドについてわかった気になりたい人にはオススメできる。
-----
コンピュータ科学的な側面では上記の通りだが、私は本書を読み、哲学的な側面からも圏論に興味を持った。
哲学では、今までにない概念を導入して複数の事柄を説明したりする必要に迫られることがある。その際、ある程度日常の用法から乖離しすぎない日常用語を拝借してその概念を定義するわけだが、そのやり方が厳密でないために、この定義のすれ違いから哲学的議論が噛み合わない、という事象が多く発生しているように見受けられる。
『意識 consciousness』という用語、概念がその際たるもので、
「哲学者、科学者の数だけ定義がある」
と言われるほどの有様である。
哲学的議論に厳密さが必要な局面は往々にしてあり、その際に数学の厳密さを利用して哲学的命題を記述できないのか、と私はかねがね思っていた。
圏論が、その答えのヒントをくれはしないかと、私は本書を読んで感じた。
圏論が提供するのはものの見方や枠組みである。どのようなものを眺める時に実際に圏論を使うのか、というところは利用者次第だ。今まで見てきた物事を圏論という枠組みを通して見直すことで、今まで見えなかった共通性が見つかるかもしれないし、そこから科学が新たな方向に発展するかもしれない。圏論が、数学内のみならずコンピュータ科学や物理学でも応用されているという記述を読むと、ロマンのある話だという筆者の主張も頷ける。
哲学に興味がある人にもオススメできる。