SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
A Tale of Two Monads: Category-theoretic and
Computational viewpoints
Liang-Ting Chen
What is … a monad?
Functional Programmer:
What is … a monad?
Functional Programmer:
• a warm, fuzzy, little thing
Monica Monad, by FalconNL
What is … a monad?
Functional Programmer:
• a warm, fuzzy, little thing
• return and bind with monad
laws
class Monad m where	
(>>=) ::m a->(a -> m b)->m b
return::a ->m a	
!
-- monad laws 	
return a >>= k = k a	
m >>= return = m	
m >>= (x-> k x >>= h) =

(m >>= k) >>= h
What is … a monad?
Functional Programmer:
• a warm, fuzzy, little thing
• return and bind with monad
laws
• a programmable semicolon
• do { x' <- return x; f x’} 

≡ do { f x }

• do { x <- m; return x }

≡ do { m }

• do { y <- do { x <- m; f x }
g y }

≡ do { x <- m; do { y <- f
x; g y }}

≡ do { x <- m; y <- f x; g y
}
What is … a monad?
Functional Programmer:
• a warm, fuzzy, little thing
• return and bind with monad
laws
• a programmable semicolon
• E. Moggi, “Notions of
computation and monads”, 1991
T : Obj(C) ! Obj(C)
⌘A : A ! TA
( )⇤
: hom(A, TB) ! hom(TA, TB)
⌘⇤
A = idTA
⌘A; f⇤
= f
f⇤
; g⇤
= (f; g)⇤
Kleisli Triple
monad laws
` M :
` [M]T : T
(return)
` M : T⌧ x : ⌧ ` N : T
` letT (x ( M) in N : T
(bind)
“Hey, mathematician! What is a monad?”,

you asked.
“A monad in X is just a monoid in the category
of endofunctors of X, what’s the problem?”
–Philip Wadler
–James Iry, A Brief, Incomplete and Mostly Wrong History of
Programming Languages
“A monad in X is just a monoid in the category
of endofunctors of X, what’s the problem?”
–Saunders Mac Lane, Categories for the Working Mathematician, p.138
“A monad in X is just a monoid in the category
of endofunctors of X, with product × replaced
by composition of endofunctors and unit set by
the identity endofunctor.”
What is … a monad?
Mathematician:
• a monoid in the category of
endofunctors T3 Tµ
//
µT
✏✏
T2
µ
✏✏
T2
µ
// T
T
T⌘
//
id
T2
µ
✏✏
T
⌘T
oo
id~~
T
monad laws
monad on a category
T : C ! C
⌘: I ˙!T
µ: T2
˙!T
What is … a monad?
Mathematician:
• a monoid in the category of
endofunctors
• a monoid in the endomorphism
category K(a,a) of a bicategory K
• 0-cell a;
• 1-cell t: a ! a;
• 2-cell ⌘: 1a ! t, and µ: tt ! t
ttt
tµ
//
µt
✏✏
tt
µ
✏✏
tt µ
// t
t
t⌘
//
id
tt
µ
✏✏
t
⌘t
oo
id

t
monad in a bicategory
monad laws
What is … a monad?
Mathematician:
• a monoid in the category of
endofunctors
• a monoid in the endomorphism
category K(a,a) of a bicategory K
• …
from Su Horng’s slide
Monads in Haskell, the Abstract Ones
• class Functor m => Monad m where

unit :: a -> m a -- η 

join :: m (m a) -> m a -- μ	
• --join . (fmap join) = join . join

--join . (fmap unit) = join . unit = id
T3 Tµ
//
µT
✏✏
T2
µ
✏✏
T2
µ
// T
T
T⌘
//
id
T2
µ
✏✏
T
⌘T
oo
id~~
T
Kleisli Triples and Monads are Equivalent (Manes 1976)
• fmap :: Monad m => (a -> b) -> m a -> m b

fmap f x = x >>= return . f



join :: Monad m => m (m a) -> m a

join x = x >>= id

-- id :: m a -> m a
Kleisli Triples and Monads are Equivalent (Manes 1976)
• fmap :: Monad m => (a -> b) -> m a -> m b

fmap f x = x >>= return . f



join :: Monad m => m (m a) -> m a

join x = x >>= id

-- id :: m a -> m a
• (>>=) :: Monad m => m a -> (a -> m b) -> m b

x >>= f = join (fmap f x)

-- fmap f :: m a -> m (m b)
–G. M. Kelly and A. J. Power, Adjunctions whose counits are
coequalizers, and presentations of finitary enriched monads, 1993.
Monads are derivable from algebraic
operations and equations if and only if they
have finite rank.
An Algebraic Theory: Monoid
• a set M with
• a nullary operation ✏: 1 ! M
• a binary operation •: M ⇥ M ! M
satisfying
• associativity: (a • b) • c = a • (b • c)
• identity: a • ✏ = ✏ • a = a
Monoids in Haskell:
class Monoid a where	
mempty :: a	
-- ^ Identity of 'mappend'	
mappend :: a -> a -> a	
-- ^ An associative operation	
!
instance Monoid [a] where	
mempty = []	
mappend = (++)	
!
instance Monoid b => Monoid (a -> b) where	
mempty _ = mempty	
mappend f g x = f x `mappend` g x
An Algebraic Theory: Semi-lattice
• a set L with
• a binary operation _: M ⇥ M ! M
satisfying
• commutativity: a _ b = b _ a
• associativity: a _ (b _ c) = (a _ b) _ c
• idenpotency: a _ a = a
Semi-lattices in Haskell
class SemiLattice a where	
join :: a -> a -> a	
!
instance SemiLattice Bool where	
join = (||)	
!
instance SemiLattice v => SemiLattice (k -> v) where	
f `join` g = x -> f x `join` g x	
!
instance SemiLattice IntSet where	
join = union
An Algebraic Theory (defined as a type class in Haskell)
• a set of operations 2 ⌃ and ar( ) 2 N
• a set of equations with variables, e.g. 1( 1(x, y), z) = 1(x, 1(y, z))
A Model of an Algebraic Theory (an instance)
• a set M with
• an n-ary function M for each operation with ar( ) = n
satisfying each equation
A Monad with Finite Rank
MX =
[
{ Mi[MS] | i: S ✓f X }
(Mi: MS ! MX)
• maybe
• exceptions
• nondeterminism
• side-effects
but continuations is not algebraic
Examples of Algebraic Effects
X 7! X + E
X 7! (X ⇥ State)State
X 7! Pfin(X)
X 7! R(RX )
X 7! X + 1
Algebraic Theory of Exception
A monadic program
f :: A -> B + E	
corresponds to a homomorphism between free algebras
• nullary operations raisee for each e 2 E
• no equations
Why Algebraic Effects?
• Various ways of combination, e.g. sum, product,
distribution, etc.
• Equational reasoning of monadic programming is simpler.
• A classification of effects: a deeper insight.
Conclusion
• Moggi’s formulation solves fundamental problems, e.g. a
unified approach to I/O.
• Mathematicians bring new ideas to functional
programming, e.g. algebraic effects, modular
construction of effects
• Still an ongoing area
Conclusion
• Moggi’s formulation solves fundamental problems, e.g. a
unified approach to I/O.
• Mathematicians bring new ideas to functional
programming, e.g. algebraic effects, modular
construction of effects
• Still an ongoing area

Weitere ähnliche Inhalte

Was ist angesagt?

Eigen values and eigen vectors
Eigen values and eigen vectorsEigen values and eigen vectors
Eigen values and eigen vectors
Riddhi Patel
 
Eigen values and eigenvectors
Eigen values and eigenvectorsEigen values and eigenvectors
Eigen values and eigenvectors
Amit Singh
 
Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)
Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)
Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)
Prasanth George
 
Eigen values and eigen vectors engineering
Eigen values and eigen vectors engineeringEigen values and eigen vectors engineering
Eigen values and eigen vectors engineering
shubham211
 
Seismic data processing introductory lecture
Seismic data processing introductory lectureSeismic data processing introductory lecture
Seismic data processing introductory lecture
Amin khalil
 

Was ist angesagt? (20)

derogatory and non derogatory matrices
derogatory and non derogatory matricesderogatory and non derogatory matrices
derogatory and non derogatory matrices
 
eigenvalue
eigenvalueeigenvalue
eigenvalue
 
Eigen value and vectors
Eigen value and vectorsEigen value and vectors
Eigen value and vectors
 
Eigenvalues and eigenvectors
Eigenvalues and eigenvectorsEigenvalues and eigenvectors
Eigenvalues and eigenvectors
 
Eigen values and eigen vectors
Eigen values and eigen vectorsEigen values and eigen vectors
Eigen values and eigen vectors
 
Seismic data processing (mathematical foundations)
Seismic data processing (mathematical foundations)Seismic data processing (mathematical foundations)
Seismic data processing (mathematical foundations)
 
Eigen value , eigen vectors, caley hamilton theorem
Eigen value , eigen vectors, caley hamilton theoremEigen value , eigen vectors, caley hamilton theorem
Eigen value , eigen vectors, caley hamilton theorem
 
Eigen values and eigenvectors
Eigen values and eigenvectorsEigen values and eigenvectors
Eigen values and eigenvectors
 
Eigenvalues
EigenvaluesEigenvalues
Eigenvalues
 
Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)
Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)
Eigenvalues and Eigenvectors (Tacoma Narrows Bridge video included)
 
Eigen value and eigen vector
Eigen value and eigen vectorEigen value and eigen vector
Eigen value and eigen vector
 
4. Linear Algebra for Machine Learning: Eigenvalues, Eigenvectors and Diagona...
4. Linear Algebra for Machine Learning: Eigenvalues, Eigenvectors and Diagona...4. Linear Algebra for Machine Learning: Eigenvalues, Eigenvectors and Diagona...
4. Linear Algebra for Machine Learning: Eigenvalues, Eigenvectors and Diagona...
 
Eigenvalues and Eigenvectors
Eigenvalues and EigenvectorsEigenvalues and Eigenvectors
Eigenvalues and Eigenvectors
 
Diagonalization and eigen
Diagonalization and eigenDiagonalization and eigen
Diagonalization and eigen
 
2. Linear Algebra for Machine Learning: Basis and Dimension
2. Linear Algebra for Machine Learning: Basis and Dimension2. Linear Algebra for Machine Learning: Basis and Dimension
2. Linear Algebra for Machine Learning: Basis and Dimension
 
Eigen values and eigen vectors engineering
Eigen values and eigen vectors engineeringEigen values and eigen vectors engineering
Eigen values and eigen vectors engineering
 
Maths-->>Eigenvalues and eigenvectors
Maths-->>Eigenvalues and eigenvectorsMaths-->>Eigenvalues and eigenvectors
Maths-->>Eigenvalues and eigenvectors
 
Applied numerical methods lec13
Applied numerical methods lec13Applied numerical methods lec13
Applied numerical methods lec13
 
Eigen values and eigen vectors
Eigen values and eigen vectorsEigen values and eigen vectors
Eigen values and eigen vectors
 
Seismic data processing introductory lecture
Seismic data processing introductory lectureSeismic data processing introductory lecture
Seismic data processing introductory lecture
 

Andere mochten auch

Pause 2017 Overview Document v3
Pause 2017 Overview Document v3Pause 2017 Overview Document v3
Pause 2017 Overview Document v3
David C. Fary
 
3 131203214847-phpapp02
3 131203214847-phpapp023 131203214847-phpapp02
3 131203214847-phpapp02
Kat Thrus
 
Evaluation Part 2
Evaluation Part 2Evaluation Part 2
Evaluation Part 2
SophieB23
 
Evaluation Part 3
Evaluation Part 3Evaluation Part 3
Evaluation Part 3
SophieB23
 
1.7 functional programming
1.7 functional programming1.7 functional programming
1.7 functional programming
futurespective
 

Andere mochten auch (20)

Category Theory for Mortal Programmers
Category Theory for Mortal ProgrammersCategory Theory for Mortal Programmers
Category Theory for Mortal Programmers
 
Functional programming techniques in regular JavaScript
Functional programming techniques in regular JavaScriptFunctional programming techniques in regular JavaScript
Functional programming techniques in regular JavaScript
 
Functional Programming in C# and F#
Functional Programming in C# and F#Functional Programming in C# and F#
Functional Programming in C# and F#
 
Groovy Monads
Groovy MonadsGroovy Monads
Groovy Monads
 
Pause 2017 Overview Document v3
Pause 2017 Overview Document v3Pause 2017 Overview Document v3
Pause 2017 Overview Document v3
 
3 131203214847-phpapp02
3 131203214847-phpapp023 131203214847-phpapp02
3 131203214847-phpapp02
 
[FT-8][banacorn] Socket.IO for Haskell Folks
[FT-8][banacorn] Socket.IO for Haskell Folks[FT-8][banacorn] Socket.IO for Haskell Folks
[FT-8][banacorn] Socket.IO for Haskell Folks
 
3.9 Resume Years
3.9 Resume Years3.9 Resume Years
3.9 Resume Years
 
Very final powerpoint for apps for good (Team Appocolypse)
Very final powerpoint for apps for good (Team Appocolypse)Very final powerpoint for apps for good (Team Appocolypse)
Very final powerpoint for apps for good (Team Appocolypse)
 
Apps for good powerpoint
Apps for good powerpointApps for good powerpoint
Apps for good powerpoint
 
Evaluation Part 2
Evaluation Part 2Evaluation Part 2
Evaluation Part 2
 
Evaluation Part 3
Evaluation Part 3Evaluation Part 3
Evaluation Part 3
 
Team Appocolypse
Team AppocolypseTeam Appocolypse
Team Appocolypse
 
Classificador de padrões para determinar suceptibilidade ao fungo h em folhas...
Classificador de padrões para determinar suceptibilidade ao fungo h em folhas...Classificador de padrões para determinar suceptibilidade ao fungo h em folhas...
Classificador de padrões para determinar suceptibilidade ao fungo h em folhas...
 
[FLOLAC'14][scm] Functional Programming Using Haskell
[FLOLAC'14][scm] Functional Programming Using Haskell[FLOLAC'14][scm] Functional Programming Using Haskell
[FLOLAC'14][scm] Functional Programming Using Haskell
 
The Internet Vs the Mall
The Internet Vs the Mall The Internet Vs the Mall
The Internet Vs the Mall
 
Representacion de power point
Representacion de power point Representacion de power point
Representacion de power point
 
Slide - Maxime Bartier
Slide - Maxime BartierSlide - Maxime Bartier
Slide - Maxime Bartier
 
Aplicação de algoritmos genético e elipsoidal no
Aplicação de algoritmos genético e elipsoidal noAplicação de algoritmos genético e elipsoidal no
Aplicação de algoritmos genético e elipsoidal no
 
1.7 functional programming
1.7 functional programming1.7 functional programming
1.7 functional programming
 

Ähnlich wie [FT-11][ltchen] A Tale of Two Monads

Pshs 3rd yr_functions
Pshs 3rd yr_functionsPshs 3rd yr_functions
Pshs 3rd yr_functions
Renee Tan
 

Ähnlich wie [FT-11][ltchen] A Tale of Two Monads (20)

Comonads in Haskell
Comonads in HaskellComonads in Haskell
Comonads in Haskell
 
Seismic data processing lecture 3
Seismic data processing lecture 3Seismic data processing lecture 3
Seismic data processing lecture 3
 
Category Theory made easy with (ugly) pictures
Category Theory made easy with (ugly) picturesCategory Theory made easy with (ugly) pictures
Category Theory made easy with (ugly) pictures
 
Reduction Monads and Their Signatures
Reduction Monads and Their SignaturesReduction Monads and Their Signatures
Reduction Monads and Their Signatures
 
Lambda Calculus & Functional programming
Lambda Calculus & Functional programmingLambda Calculus & Functional programming
Lambda Calculus & Functional programming
 
Linear Algebra Presentation including basic of linear Algebra
Linear Algebra Presentation including basic of linear AlgebraLinear Algebra Presentation including basic of linear Algebra
Linear Algebra Presentation including basic of linear Algebra
 
Presentation gauge field theory
Presentation gauge field theoryPresentation gauge field theory
Presentation gauge field theory
 
Subgradient Methods for Huge-Scale Optimization Problems - Юрий Нестеров, Cat...
Subgradient Methods for Huge-Scale Optimization Problems - Юрий Нестеров, Cat...Subgradient Methods for Huge-Scale Optimization Problems - Юрий Нестеров, Cat...
Subgradient Methods for Huge-Scale Optimization Problems - Юрий Нестеров, Cat...
 
bv_cvxslides (1).pdf
bv_cvxslides (1).pdfbv_cvxslides (1).pdf
bv_cvxslides (1).pdf
 
Q
QQ
Q
 
Lesson 2: A Catalog of Essential Functions
Lesson 2: A Catalog of Essential FunctionsLesson 2: A Catalog of Essential Functions
Lesson 2: A Catalog of Essential Functions
 
DSP2_slides_04_adaptievefiltering.pdf
DSP2_slides_04_adaptievefiltering.pdfDSP2_slides_04_adaptievefiltering.pdf
DSP2_slides_04_adaptievefiltering.pdf
 
Computer algorithm(Dynamic Programming).pdf
Computer algorithm(Dynamic Programming).pdfComputer algorithm(Dynamic Programming).pdf
Computer algorithm(Dynamic Programming).pdf
 
Data Analysis and Algorithms Lecture 1: Introduction
 Data Analysis and Algorithms Lecture 1: Introduction Data Analysis and Algorithms Lecture 1: Introduction
Data Analysis and Algorithms Lecture 1: Introduction
 
Pshs 3rd yr_functions_young_einstein
Pshs 3rd yr_functions_young_einsteinPshs 3rd yr_functions_young_einstein
Pshs 3rd yr_functions_young_einstein
 
Pshs 3rd yr_functions
Pshs 3rd yr_functionsPshs 3rd yr_functions
Pshs 3rd yr_functions
 
introduction to matlab.pptx
introduction to matlab.pptxintroduction to matlab.pptx
introduction to matlab.pptx
 
A bit about мcmc
A bit about мcmcA bit about мcmc
A bit about мcmc
 
A MATLAB project on LCR circuits
A MATLAB project on LCR circuitsA MATLAB project on LCR circuits
A MATLAB project on LCR circuits
 
Differential calculus
Differential calculusDifferential calculus
Differential calculus
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

[FT-11][ltchen] A Tale of Two Monads

  • 1. A Tale of Two Monads: Category-theoretic and Computational viewpoints Liang-Ting Chen
  • 2. What is … a monad? Functional Programmer:
  • 3. What is … a monad? Functional Programmer: • a warm, fuzzy, little thing Monica Monad, by FalconNL
  • 4. What is … a monad? Functional Programmer: • a warm, fuzzy, little thing • return and bind with monad laws class Monad m where (>>=) ::m a->(a -> m b)->m b return::a ->m a ! -- monad laws return a >>= k = k a m >>= return = m m >>= (x-> k x >>= h) =
 (m >>= k) >>= h
  • 5. What is … a monad? Functional Programmer: • a warm, fuzzy, little thing • return and bind with monad laws • a programmable semicolon • do { x' <- return x; f x’} 
 ≡ do { f x }
 • do { x <- m; return x }
 ≡ do { m }
 • do { y <- do { x <- m; f x } g y }
 ≡ do { x <- m; do { y <- f x; g y }}
 ≡ do { x <- m; y <- f x; g y }
  • 6. What is … a monad? Functional Programmer: • a warm, fuzzy, little thing • return and bind with monad laws • a programmable semicolon • E. Moggi, “Notions of computation and monads”, 1991 T : Obj(C) ! Obj(C) ⌘A : A ! TA ( )⇤ : hom(A, TB) ! hom(TA, TB) ⌘⇤ A = idTA ⌘A; f⇤ = f f⇤ ; g⇤ = (f; g)⇤ Kleisli Triple monad laws ` M : ` [M]T : T (return) ` M : T⌧ x : ⌧ ` N : T ` letT (x ( M) in N : T (bind)
  • 7. “Hey, mathematician! What is a monad?”,
 you asked.
  • 8. “A monad in X is just a monoid in the category of endofunctors of X, what’s the problem?” –Philip Wadler
  • 9. –James Iry, A Brief, Incomplete and Mostly Wrong History of Programming Languages “A monad in X is just a monoid in the category of endofunctors of X, what’s the problem?”
  • 10. –Saunders Mac Lane, Categories for the Working Mathematician, p.138 “A monad in X is just a monoid in the category of endofunctors of X, with product × replaced by composition of endofunctors and unit set by the identity endofunctor.”
  • 11. What is … a monad? Mathematician: • a monoid in the category of endofunctors T3 Tµ // µT ✏✏ T2 µ ✏✏ T2 µ // T T T⌘ // id T2 µ ✏✏ T ⌘T oo id~~ T monad laws monad on a category T : C ! C ⌘: I ˙!T µ: T2 ˙!T
  • 12. What is … a monad? Mathematician: • a monoid in the category of endofunctors • a monoid in the endomorphism category K(a,a) of a bicategory K • 0-cell a; • 1-cell t: a ! a; • 2-cell ⌘: 1a ! t, and µ: tt ! t ttt tµ // µt ✏✏ tt µ ✏✏ tt µ // t t t⌘ // id tt µ ✏✏ t ⌘t oo id  t monad in a bicategory monad laws
  • 13. What is … a monad? Mathematician: • a monoid in the category of endofunctors • a monoid in the endomorphism category K(a,a) of a bicategory K • … from Su Horng’s slide
  • 14. Monads in Haskell, the Abstract Ones • class Functor m => Monad m where
 unit :: a -> m a -- η 
 join :: m (m a) -> m a -- μ • --join . (fmap join) = join . join
 --join . (fmap unit) = join . unit = id T3 Tµ // µT ✏✏ T2 µ ✏✏ T2 µ // T T T⌘ // id T2 µ ✏✏ T ⌘T oo id~~ T
  • 15. Kleisli Triples and Monads are Equivalent (Manes 1976) • fmap :: Monad m => (a -> b) -> m a -> m b
 fmap f x = x >>= return . f
 
 join :: Monad m => m (m a) -> m a
 join x = x >>= id
 -- id :: m a -> m a
  • 16. Kleisli Triples and Monads are Equivalent (Manes 1976) • fmap :: Monad m => (a -> b) -> m a -> m b
 fmap f x = x >>= return . f
 
 join :: Monad m => m (m a) -> m a
 join x = x >>= id
 -- id :: m a -> m a • (>>=) :: Monad m => m a -> (a -> m b) -> m b
 x >>= f = join (fmap f x)
 -- fmap f :: m a -> m (m b)
  • 17. –G. M. Kelly and A. J. Power, Adjunctions whose counits are coequalizers, and presentations of finitary enriched monads, 1993. Monads are derivable from algebraic operations and equations if and only if they have finite rank.
  • 18. An Algebraic Theory: Monoid • a set M with • a nullary operation ✏: 1 ! M • a binary operation •: M ⇥ M ! M satisfying • associativity: (a • b) • c = a • (b • c) • identity: a • ✏ = ✏ • a = a
  • 19. Monoids in Haskell: class Monoid a where mempty :: a -- ^ Identity of 'mappend' mappend :: a -> a -> a -- ^ An associative operation ! instance Monoid [a] where mempty = [] mappend = (++) ! instance Monoid b => Monoid (a -> b) where mempty _ = mempty mappend f g x = f x `mappend` g x
  • 20. An Algebraic Theory: Semi-lattice • a set L with • a binary operation _: M ⇥ M ! M satisfying • commutativity: a _ b = b _ a • associativity: a _ (b _ c) = (a _ b) _ c • idenpotency: a _ a = a
  • 21. Semi-lattices in Haskell class SemiLattice a where join :: a -> a -> a ! instance SemiLattice Bool where join = (||) ! instance SemiLattice v => SemiLattice (k -> v) where f `join` g = x -> f x `join` g x ! instance SemiLattice IntSet where join = union
  • 22. An Algebraic Theory (defined as a type class in Haskell) • a set of operations 2 ⌃ and ar( ) 2 N • a set of equations with variables, e.g. 1( 1(x, y), z) = 1(x, 1(y, z))
  • 23. A Model of an Algebraic Theory (an instance) • a set M with • an n-ary function M for each operation with ar( ) = n satisfying each equation
  • 24. A Monad with Finite Rank MX = [ { Mi[MS] | i: S ✓f X } (Mi: MS ! MX)
  • 25. • maybe • exceptions • nondeterminism • side-effects but continuations is not algebraic Examples of Algebraic Effects X 7! X + E X 7! (X ⇥ State)State X 7! Pfin(X) X 7! R(RX ) X 7! X + 1
  • 26. Algebraic Theory of Exception A monadic program f :: A -> B + E corresponds to a homomorphism between free algebras • nullary operations raisee for each e 2 E • no equations
  • 27. Why Algebraic Effects? • Various ways of combination, e.g. sum, product, distribution, etc. • Equational reasoning of monadic programming is simpler. • A classification of effects: a deeper insight.
  • 28. Conclusion • Moggi’s formulation solves fundamental problems, e.g. a unified approach to I/O. • Mathematicians bring new ideas to functional programming, e.g. algebraic effects, modular construction of effects • Still an ongoing area
  • 29. Conclusion • Moggi’s formulation solves fundamental problems, e.g. a unified approach to I/O. • Mathematicians bring new ideas to functional programming, e.g. algebraic effects, modular construction of effects • Still an ongoing area