学習/備忘

Arrowの話をしよう (2)不動点と再帰

今回圏論の話は出ません。 関数型言語勉強の中に、不動点コンビネータは避けては通れない道ですね。不動点とかなんとなく難しい印象がありますが、意外に簡単です。以下は定義(Wikipediaから): 関数 f の不動点とは、関数 f(x) = x を満たすような x のこ…

Arrowの話をしよう (1)ArrowとArrow記法

Q: そんなタイトルで大丈夫か? A: 大丈夫だ、問題ない。Q: Arrowってなに? A: あれは今から36万…いや、1万4千年前だったか…まぁいい、私にとってはつい昨日の出来事だが、君たちにとっては多分明日の出来事だ。彼には72通りの名前があるから、なんて呼べば…

モナドも、コモナドも、あるんだよ(後篇)

前篇のつづき、コモナドを話す前にまずDualityについて復習しよう: 圏論にて、ある物の双対(Dual)を次のように定義する: この定義はつまり確定的に明らかであること:矢印をひっくり返すだけ簡単な仕事です。 ある構造xxxに対して、中の要素をすべてdualを…

Category of algebras

自然数の集合Nに対して、関数f x = x * nを定義すれば、{N,f}は圏であることは明らかだろう: objects: n morphisms: f: n -> n' id: f x = x * 1 そこで、fはもう一つの圏のmorphismsとして働くことができる、Haskellの例: foo :: (Int -> Int) -> (Int ->…

モナドも、コモナドも、あるんだよ(前篇)

さて、今回はみんな大好きなモナドだよ、まあ俺もそうだけど。まず圏論のmonadから見てみよう: はendofunctor*1。今私たちの手元にmorphisms がある。問題は:どんな状況の下で、の意味を変更する事により、が別の圏にのような形式になるのか? まず、何ら…

Haskellの型システムについて

今後も使う予定なのでメモしとく。 詳細は↓の文章を参照してください: http://en.wikibooks.org/wiki/Haskell/Category_theoryHaskellの型システムが圏であり、ここでHaskと名をつける。 Haskの要素は下表通り: Category Hask objects 型の集合{Int, Doubl…

米田の補題について

先ずはHomo functorの定義: h(-,C): Cop -> Set さらに: h(-): C -> (Cop -> Set) functor h(-) は米田埋め込み(Yoneda embedding)という名があり、Yと表記される。 米田の補題(Yoneda lemma)は下記となる: ∀F ∈ (Cop -> Set) と ∀A ∈ C, ∃ fA,F: ( h(-,A)…