The Evolution of Effects
summary
Survey of monads to monad transformers to algebraic and higher‑order effects, arguing that higher-order free monad signatures fix non‑algebraic scoped operations (catch, once) and restore modularity lost with simple monad stacks. Presents an implementation (used at GitHub for code analysis) that yields 250× faster behavior vs prior libraries, points to fused-effects as a pragmatic starter, and notes the delivered framework works for expressivity but still needs engineering for production efficiency.
AI-written summary · about
chapters (42)
- 0:00Introduction by Nicholas Vu
- 0:43Talk overview and historical focus
- 1:25Functional vs imperative programming origins
- 2:28Early programming language history
- 4:36Fortran and Lisp innovations
- 6:43ALGOL and imperative-applicative expressions
- 8:11Peter Landin's I-SWIM and structured programming
- 10:16Structured programming and denotational semantics
- 12:23Synergy between functional and imperative paradigms
- 13:29Introduction to monads and the burrito metaphor
- 14:14Ancient history of monads in category theory
- 17:01Godement calculus and monad laws
- 18:27Monads in topology and early naming struggles
- 19:09Category theory's role in computer science
- 21:14Elgot's work on algebraic theories and monads
- 22:17IBM's adjunction group and categorical semantics
- 24:00Initial algebra semantics and monads for state
- 25:21Dana Scott and Eugenio Moggi's contributions
- 27:07Phil Wadler and exceptions without primitive support
- 28:54Richard Bird's list theory and Spivey's insights
- 30:40Free monads and the first appearance of bind
- 32:23Monad comprehensions and Wadler's examples
- 34:10Monad transformers and modularity in MTL
- 38:25MTL's dominance and limitations
- 39:06Introduction to effect handlers
- 40:09Algebraic effects and their properties
- 41:12Extensibility and modularity in effect handlers
- 43:58Equational reasoning and flexibility of handlers
- 44:42Bill Lawvere's L-theories and enriched theories
- 46:25Operations and handlers distinction
- 47:50Scoped effects and GitHub's code analysis
- 49:11Functional logic programming with handlers
- 50:34Higher-order free monads and the scope problem
- 53:47Fused effects library and efficiency gains
- 54:48The forest of effect libraries today
- 55:10Future directions and expressivity challenges
- 57:39Q&A session begins
- 57:59Choosing an effect library for beginners
- 59:02Language support vs libraries for effects
- 1:01:29Recommended papers for monad and effect handlers
- 1:03:12From Lawvere to algebraic effects
- 1:05:21Unified framework for effects and future release
related talks
31mThe Eff monad, one monad to rule them all
28mA Series of Unfortunate Effects
43mFunctional Programming with Effects
33mExtensible Effects: A Leaner Cake for Purely Functional Code
50mFunctional Programming with Effects
43mSurviving a world overflowing with effects
33mRethinking Effects with Effect Systems
44mEffects, Algebraically yours ..
