今回のトークでは「斜めの矢印」とか「合成」とかそういう言葉を説明に含める必要があったので圏論のことばや記法を前半で色々紹介しましたが、泥沼詳細には踏み込み過ぎないように気をつけました。その泥沼詳細にあえて踏み込んでみたい人のために、このトークに出てきた話と圏論の言葉の対応表を与えておきます。
スライド内の言葉 | 圏論的な性質 |
---|---|
Type(型) | 対象 |
Arrow(矢印)、または、関数 | 射 |
id | 恒等射 |
M() | 関手の対象関数 |
モナド = M(), unit, flat_map | Kleisli triple*1 |
斜めの矢印、または、Kleisli射 | Kleisli圏の射 |
map | 関手の射関数 |
unit | 自然変換 |
flatten | 自然変換 |
M()+map, unit, flatten | モナド |
さらにM(), unit, flat_mapによって高階関数の成す圏のKleisli圏が構成されるとみなすと、unitはそのKleisli圏の恒等射、flat_mapを介した2つのKleisli射の合成がそのKleisli圏での合成と言えます。
勉強する順番としては、圏(対象、射、恒等射)→関手→自然変換→モナド、が最速です。