モナモナ言うモナド入門
DESCRIPTION
モナドは友達、こわくないよ。TRANSCRIPT
モナモナ言うモナド入門 2012.11.17 hiratara
今日話すこと✦ 圏論から目を背けずに 、モナドの定義を淡々と
✦ 図はスライド作るの面倒なので板書で
✦ タイトルは@kazu_yamamoto さんの「モナモナ言わないモナド入門」のオマージュ
今日話すこと
✦ モナドは数学の概念
✦ よほどの数学嫌いでもない限り、回り道をして誤摩化す必要はない
ゃ駄目だ。逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。
逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。
逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ駄目だ。 逃げちゃ
圏(Category)
圏(Category)
✦ C0 - 対象の集合。A, B, C, ...
✦ C1 - 射の集合。f, g, h, ...
✦ dom: C1 → C0 - 定義域
✦ cod: C1 → C0 - 値域
圏(Category)
✦ id: C0 → C1 - 恒等射
✦ dom (id A) = cod (id A) = A
✦ ∘: C1×C1 → C1 - 合成(C1×C1 := {<g, f>| dom g = cod f})
✦ dom g ∘f = dom f, cod g ∘f = cod g
圏(Category)
✦ h ∘(g ∘f) = (h ∘g) ∘f - 結合律
✦ id ∘ f = f ∘ id = f - 恒等射
関手(Functor)
関手(Functor)
✦ 圏Cと圏Dについて、関手F : C → Dとは、F : C0 → D0 - 対象関数F : C1 → D1 - 射関数の組
関手(Functor)
✦ dom Ff = F(dom f), cod Ff = F(cod f)✦ F id = id✦ F (g ∘f) = Fg ∘ Ff
自然変換(Natural Transformation)
自然変換(Nat)
✦ 関手F, G:C → D について、自然変換α:F→Gとは、α : C0 → D1(dom αA = FA、cod αA = GA)
自然変換(Nat)
✦ 任意のCの射f : A → Bについて、αB∘Ff = Gf∘αA
補足)垂直合成
✦ F, F’,F’’:C→C’α:F→F’, β:F’→F’’について、β.α:F→F’’を(β.α)A := βA∘αAと定義。
水平合成
✦ F, F’:C→C’、G, G’:C’→C’’
α:F→F’, β:G→G’について、β∘α:FG→F’G’を(β∘α)A := βF’A∘GαA (= G’αA∘βFA)と定義。
モノイド(Monoid)
モノイダル圏
✦ 圏C、双関手□:C×C→C、対象I、自然同型α:(-□-)□-→-□(-□-)、λ:I□-→id、ρ:-□I→idについて、
モノイダル圏
✦ (C, □, I, α, λ, ρ)がモノイダル圏とは、任意の対象W, X, Y ,Zについて、W□α(X, Y, Z)∘α(W, X□Y, Z)∘α(W, X, Y)□Z=α(W, X, Y□Z)∘α(W□X, Y, Z)X□λ∘α(X, I, Y) = ρ□Y
モノイド
✦ モノイダル圏 (C, □, I, α, λ, ρ)において、対象M、射µ:M□M→M、η:I→Mがモノイドとは、µ∘id□µ∘α(M, M, M) = µ∘µ□idµ∘η□id = λ, µ∘id□η = ρ
モナド(Monad)
モナド
✦ 関手 T:C→C、自然変換η:id→T、µ:TT→T
(T, η, µ)がモナドとは、µ∘Tµ = µ∘µTµ∘Tη = µ∘ηT = id