SlideShare a Scribd company logo
1 of 27
Download to read offline
モナモナ言うモナド入門
   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
モナモナ言うモナド入門

More Related Content

Viewers also liked

すごいMonad入門
すごいMonad入門すごいMonad入門
すごいMonad入門真一 北原
 
関数型プログラミングとモナド
関数型プログラミングとモナド関数型プログラミングとモナド
関数型プログラミングとモナドMasayuki Isobe
 
循環参照のはなし
循環参照のはなし循環参照のはなし
循環参照のはなしMasahiro Honma
 
Nullのはなし(up用)
Nullのはなし(up用)Nullのはなし(up用)
Nullのはなし(up用)Souki Tanaka
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)tadaaki hayashi
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!Ra Zon
 

Viewers also liked (9)

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

More from Masahiro Honma

レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)レンズ (ぶつかり稽古の没プレゼン)
レンズ (ぶつかり稽古の没プレゼン)Masahiro Honma
 
すべてが@__kanになる
すべてが@__kanになるすべてが@__kanになる
すべてが@__kanになるMasahiro Honma
 
Types and perl language
Types and perl languageTypes and perl language
Types and perl languageMasahiro Honma
 
カレーとHokkaidopm
カレーとHokkaidopmカレーとHokkaidopm
カレーとHokkaidopmMasahiro Honma
 
モナモナ言うモナド入門.tar.gz
モナモナ言うモナド入門.tar.gzモナモナ言うモナド入門.tar.gz
モナモナ言うモナド入門.tar.gzMasahiro Honma
 
Hachioji.pm in Machida の LT
Hachioji.pm in Machida の LTHachioji.pm in Machida の LT
Hachioji.pm in Machida の LTMasahiro Honma
 
ウヰスキーとPSGI
ウヰスキーとPSGIウヰスキーとPSGI
ウヰスキーとPSGIMasahiro Honma
 
モデルから知るGit
モデルから知るGitモデルから知るGit
モデルから知るGitMasahiro Honma
 
YAPCレポートの舞台裏
YAPCレポートの舞台裏YAPCレポートの舞台裏
YAPCレポートの舞台裏Masahiro Honma
 
Stateモナドの解説 後編
Stateモナドの解説 後編Stateモナドの解説 後編
Stateモナドの解説 後編Masahiro Honma
 
Stateモナドの解説 中編
Stateモナドの解説 中編Stateモナドの解説 中編
Stateモナドの解説 中編Masahiro Honma
 

More from 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モナドの解説 中編
 

Recently uploaded

ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 

Recently uploaded (6)

ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 

モナモナ言うモナド入門

  • 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