Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Like this presentation? Why not share!

- Running Free with the Monads by kenbot 7941 views
- Growth kinetics by Jayashree Sethuraman 7048 views
- Introduction to Monads in Scala (1) by stasimus 10858 views
- Category theory for beginners by kenbot 52154 views
- Functional Programming for OO Progr... by Calvin Cheng 1292 views
- Database Defense In Depth by Geoffrey Anderson 639 views

No Downloads

Total views

1,014

On SlideShare

0

From Embeds

0

Number of Embeds

9

Shares

0

Downloads

11

Comments

0

Likes

5

No embeds

No notes for slide

- 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. Kleisli Triple T : Obj(C) ! Obj(C) ⌘A : A ! T A ⇤ ( ) : hom(A, T B) ! hom(T A, T B) 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 `M : (return) ` [M ]T : T ` M : T⌧ x:⌧ `N :T (bind) ` letT (x ( M ) in N : T monad laws ⇤ ⌘A ⇤ = id T A ⌘A ; f = f ⇤ ⇤ ⇤ f ; g = (f ; g)
- 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. “A monad in X is just a monoid in the category of endofunctors of X, what’s the problem?” –James Iry, A Brief, Incomplete and Mostly Wrong History of Programming Languages
- 10. “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.” –Saunders Mac Lane, Categories for the Working Mathematician, p.138
- 11. monad on a category What is … a monad? Mathematician: • a monoid in the category of endofunctors T: C !C ⌘ : I !T ˙ µ : T 2 !T ˙ monad laws T 3 Tµ / T2 µ µT ✏ T2 T T⌘ µ ✏ /T 2 /T o ⌘T µ id ✏ ~ T id T
- 12. monad in a bicategory • 0-cell a; 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 • 1-cell t : a ! a; • 2-cell ⌘ : 1a ! t, and µ : tt ! t monad laws ttt tµ / tt t µ µt ✏ tt µ ✏ /t t⌘ / tt o ⌘t µ id ✏ t id t
- 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 T 3 Tµ /T 2 µ µT ✏ T2 µ ✏ /T T T⌘ 2 /T o ⌘T µ id ✏ ~ T 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. Monads are derivable from algebraic operations and equations if and only if they have ﬁnite rank. –G. M. Kelly and A. J. Power, Adjunctions whose counits are coequalizers, and presentations of ﬁnitary enriched monads, 1993.
- 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 (deﬁned 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 satisfying each equation with ar( ) = n
- 24. A Monad with Finite Rank MX = [ { M i[M S] | i : S ✓f X } (M i : M S ! M X)
- 25. Examples of Algebraic Effects • maybe X 7! X + 1 • exceptions X 7! X + E • nondeterminism X 7! Pﬁn (X) • side-effects X 7! (X ⇥ State) State but continuations is not algebraic X 7! R (RX )
- 26. Algebraic Theory of Exception • nullary operations raisee for each e 2 E • no equations A monadic program f :: A -> B + E corresponds to a homomorphism between free algebras
- 27. Why Algebraic Effects? • Various ways of combination, e.g. sum, product, distribution, etc. • Equational reasoning of monadic programming is simpler. • A classiﬁcation of effects: a deeper insight.
- 28. Conclusion • Moggi’s formulation solves fundamental problems, e.g. a uniﬁed 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 uniﬁed approach to I/O. • Mathematicians bring new ideas to functional programming, e.g. algebraic effects, modular construction of effects • Still an ongoing area

No public clipboards found for this slide

×
### Save the most important slides with Clipping

Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.

Be the first to comment