qiitaに圏論について事実ではないことを書いたエントリが何個か挙げられています。本シリーズではその内容について吟味していこうと思います。
関数、値、圏論、モナド、評価戦略、純粋関数型、その辺りの「数学的基礎」を教えるの圏論について書かれている部分で、誤っている部分、正しい部分を解説していきます。
私が使う「評価」つまり「計算」っていう言葉遣いが、
..中略..
そしてその彼らの理論的背景は数学だそうです。
圏論とか。
彼らがそう思っている数学的理論背景である「圏論」には、
もちろんそんな決意表明を後押しするような
理論、考え方なんてあるわけもなく、
「彼ら」の議論を追えていないのでコンテキストが不明ですが、引用した部分に関しては正しいです。圏論はプログラミング意味論を扱う分野ではありません。
圏論では「値」とか「関数」みたいな絶対的存在はありません。
「りんごは空を飛ばない」と同程度に無意味な表明ですが、内容は正しいです。
値は関数となり、
関数は値となり、
相互にコロコロと立場が入れ替わります。
値とは関数であり、
関数とは値なのです。
そのような事実はなく、誤りです。ある圏の射を別の圏の対象と見なす、ということはやります。
両者を渾然一体として扱えるような理論体系がどうしても必要だ、
そこで颯爽と登場するのが「圏論」である、というわけです。
操作と数、数と操作の区別が一切ないっていう構造について
明示的に論じたのが「圏論」です。
誤りです。そのような事実はありません。
圏論では単に「関係性」を論じます。
「関係性」が何を指すかにもよりますが、字面的には正しいといえる表明だと思います。
操作は、数になり
数は、操作となり、入り乱れる、
そういう関係性を数学的に論証したのが圏論です。
正しくありません。
ここまでの訳注
途中の虚数の議論については、圏論とまったく関係がないので言及していません。
次回以降に続きます。