haskell-jp / math #11 at 2021-10-04 13:14:39 +0900

連投申し訳ありません。高次元圏をHaskellで実現することはできますか?
3-cellなどの実装もできるのでしょうか。
基本的に Haskellでいう category ってhomは値、Hom-setが型、対象は型でOb-set が種ですよね。well-typedにやろうとするなら、 x,y :: Ob に対して f,g :: Hom1 x y, theta :: Hom2 x y f g とかできて欲しいとこで、Haskellは dependently typed じゃないから、自然には Ob = * = Type = TYPE 'LiftedRep になっちゃうし、 Hom1 x y が何かの型になっちゃうんですよね。そうすると Hom2 x y f gf g にどうやってはめ込むんだって話になるので、ちょっと難しい気がします。`TypeInType` 拡張とか使って data Ob = <hogehoge> とやり data Hom1 x y = <hogehoge> とやって両方kindとみなすなら何とかなりますが、それって ObHom も列挙型くらいにしかならなくてそんなに豊かではない気がしますね…。typeってコンパイル時には消去されるから実行時には2-cellしかいないし。
あー… globular にやるなら何とかなるか
Ob, Mor1, Mor2, Mor3 型を用意し、 id0 :: Ob -> Mor1 , dom1, cod1 :: Mor1 -> Ob 等を用意する。 ただしこうすると comp1 :: Mor1 -> Mor1 -> Maybe Mor1 になって結合の際の domcod が一致してないのを実行時エラーとしてしか報告できなくなりますね…。
難しそうなのですね。
ありがとうございました。
うーん、実装できたら面白そうなんだけどなぁ。