SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
モナモナ言うモナド入門
   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
モナモナ言うモナド入門

Weitere ähnliche Inhalte

Andere mochten auch (9)

すごいMonad入門
すごいMonad入門すごいMonad入門
すごいMonad入門
 
関数型プログラミングとモナド
関数型プログラミングとモナド関数型プログラミングとモナド
関数型プログラミングとモナド
 
null使ったら負け福岡版
null使ったら負け福岡版null使ったら負け福岡版
null使ったら負け福岡版
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなし
 
Nullのはなし(up用)
Nullのはなし(up用)Nullのはなし(up用)
Nullのはなし(up用)
 
Monad tutorial
Monad tutorialMonad tutorial
Monad tutorial
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 

Mehr von Masahiro Honma

Stateモナドの解説 後編
Stateモナドの解説 後編Stateモナドの解説 後編
Stateモナドの解説 後編
Masahiro Honma
 
Stateモナドの解説 中編
Stateモナドの解説 中編Stateモナドの解説 中編
Stateモナドの解説 中編
Masahiro Honma
 

Mehr von Masahiro Honma (20)

レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)
 
すべてが@__kanになる
すべてが@__kanになるすべてが@__kanになる
すべてが@__kanになる
 
Types and perl language
Types and perl languageTypes and perl language
Types and perl language
 
Currying in perl
Currying in perlCurrying in perl
Currying in perl
 
カレーとHokkaidopm
カレーとHokkaidopmカレーとHokkaidopm
カレーとHokkaidopm
 
モナモナ言うモナド入門.tar.gz
モナモナ言うモナド入門.tar.gzモナモナ言うモナド入門.tar.gz
モナモナ言うモナド入門.tar.gz
 
Perl saved a lady.
Perl saved a lady.Perl saved a lady.
Perl saved a lady.
 
Levenshtein Automata
Levenshtein AutomataLevenshtein Automata
Levenshtein Automata
 
20120526 hachioji.pm
20120526 hachioji.pm20120526 hachioji.pm
20120526 hachioji.pm
 
Arrows in perl
Arrows in perlArrows in perl
Arrows in perl
 
Hachioji.pm in Machida の LT
Hachioji.pm in Machida の LTHachioji.pm in Machida の LT
Hachioji.pm in Machida の LT
 
Monads in perl
Monads in perlMonads in perl
Monads in perl
 
ウヰスキーとPSGI
ウヰスキーとPSGIウヰスキーとPSGI
ウヰスキーとPSGI
 
モデルから知るGit
モデルから知るGitモデルから知るGit
モデルから知るGit
 
YAPCレポートの舞台裏
YAPCレポートの舞台裏YAPCレポートの舞台裏
YAPCレポートの舞台裏
 
Git入門
Git入門Git入門
Git入門
 
AnyEvent and Plack
AnyEvent and PlackAnyEvent and Plack
AnyEvent and Plack
 
Math::Category
Math::CategoryMath::Category
Math::Category
 
Stateモナドの解説 後編
Stateモナドの解説 後編Stateモナドの解説 後編
Stateモナドの解説 後編
 
Stateモナドの解説 中編
Stateモナドの解説 中編Stateモナドの解説 中編
Stateモナドの解説 中編
 

Kürzlich hochgeladen

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
 

Kürzlich hochgeladen (8)

2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 

モナモナ言うモナド入門

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