圏論

随伴関手

明日随伴関手の話をするのでそのための資料。取りあえず書きかけだけど公開する。後で直す。 - C と D はカテゴリ、F は C から D への関手。G は D から C への関手とする。Hom_C(A,B) でカテゴリ C での対象A から対象B への射の集まりを表わすことにする…

Arrow の first が満たすべき公理が式だけだとわかりにくいので図式にしてみる。

first と pure は図式の中では関手っぽさを出すため First と Pure のように先頭大文字にしてみた。多相なものには気分によって型を補足した。1.[拡張] first (pure f) = pure (f×id)Hom(X,Y) で X から Y への射の集まりを表すと (-)×id_D Hom(B,C) ---…

モナド則1(左単位元)を満たさない偽リストモナド

import Monad(liftM) data MyList a = My { unMy :: [a] } deriving (Show,Eq) instance Monad MyList where return x = My [x,x] (My xs) >>= k = My $ xs >>= (unMy.k) -- sample f x = My [x,x+1] とすると > return 2 >>= f My {unMy = [2,3,2,3]} > f 2…

モナド則3(結合律)を満たさない偽リストモナド

bind [] _ = [] bind [x] k = k x bind xs@(x:_) k = case k x of [_] -> xs >>= k otherwise -> reverse $ xs >>= k data MyList a = My { unMy :: [a] } deriving (Show,Eq) instance Monad MyList where return x = My [x] (My xs) >>= k = My $ xs `bind…

F-algebra と catamorphism を Haskell で理解する(2)

前回の続き。wikipedia の F-algebra のページ http://en.wikipedia.org/wiki/F-algebra 参照。上記ページに F(X) = 1 + X という関手の F-algebra の例で (N,[zero,succ]) が出てくる。Haskell で書くと type N = Int a :: Maybe N -> N a Nothing = 0 a (J…

F-algebra と catamorphism を Haskell で理解する

wikipedia の F-algebra のページ http://en.wikipedia.org/wiki/F-algebra 参照。 上記ページに集合圏から集合圏への関手F として F(X) = 1 + X という例がでてくるが 1 + X は Haskell では Maybe X である。 Maybe の定義 data Maybe a = Nothing | Just …

List化関手同士の自然変換

・自然変換 Listのreverse リストの反転は自然変換になっているという初等的でありがたい例。 応用として、cdrとかもいいんじゃないかと発言したけど、空リストの扱いが困るから微妙。でも同じ感じで結構考えられそう。 http://d.hatena.ne.jp/oto-oto-oto/2…