Haskellの型システムについて
今後も使う予定なのでメモしとく。
詳細は↓の文章を参照してください:
http://en.wikibooks.org/wiki/Haskell/Category_theory
Haskellの型システムが圏であり、ここでHaskと名をつける。
Haskの要素は下表通り:
Category | Hask |
---|---|
objects | 型の集合{Int, Double, String...} |
morphisms | 関数: f:: a -> b |
domain | 上記fの型a |
codomain | 上記fの型b |
composition | 関数の結合: f . g → (f . g) . h = f . (g . h) |
id | id :: a -> a |
特に忘れがちなのは:
objectは型であり、データの実体ではありません。
objectは型であり、データの実体ではありません。大事なことなので(ry
Functor篇:
Category theory | Haskell |
---|---|
funtor: | Functor classに属する型F |
F: a -> F a | |
fmap f | |
fmap id | |
fmap (g . f) = fmap g . fmap f |
Monad篇:
もなどってなに?