Hask圏
#圏論とプログラミング
Hask圏
対象
kindが*である型
ex. Int, String
例えばMaybeはそのままだと*->*なので異なるが、Intなどを型引数にとってMaybe Intとすることでkindが*になり、Hask圏の対象となる
射
関数
ex. f :: A -> B
合成
(.)
恒等射
idを各型に制限したもの
Haskellのidは多相的だが、本来の恒等射は対象ごとにあるので。
id :: a -> aだが、型ごとにidInt :: Int -> Intと定義していく感じ
Hask圏はCCC
(->) A Bも型であるのでHask圏の対象である
(->)は型コンストラクタだから
射の集合(->) A B、つまり$ \mathrm{Hask}(A,B)も対象になる
これはCCCの性質
Hask圏以外にも圏を定義できる
Category型クラス
Arrow型クラス
関手とFunctorの対応
Hask圏における自然変換
参考
Haskell/圏論 - Wikibooks
もうすこし圏論がわかってから読み返したい2019/12/15
http://tune.hateblo.jp/entry/2015/01/22/023102
https://myuon.github.io/posts/versus-hask-category/
Hask圏は圏でないということと、その理由
必要呼びとundefindのせいらしい
Colistとかcodatatypeってなに?
enrichmentってなに?
https://math.andrej.com/2016/08/06/hask-is-not-a-category/
Hask is not a category