SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

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
 

Destaque (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
 

Semelhante a [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
 

Semelhante a [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
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

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 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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
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
 
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 🐘
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

[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