The Evolution of Effects
summary
A concise history of effects traces monads → monad transformers → algebraic effects → higher-order effects, showing how do-notation origin and the bind symbol emerge and why modularity breaks monad composition. Algebraic handlers and L-theory underpin implementations; a production semantic analyzer at GitHub production use starts from a paper prototype, is engineered into a fast implementation, and runs correctly, reporting up to 250× faster than earlier handlers while supporting multiple interpretations of the same effectful program.
AI-written summary · about
chapters (22)
- 0:00Introduction
- 1:20Talk goals and effects
- 2:23Functional vs imperative origins
- 3:07Leibniz's combinatorial alphabet
- 4:34Hilbert's challenge and Gödel's theorem
- 5:59Von Neumann architecture
- 7:01Fortran control flow and Lisp features
- 9:51ALGOL's contributions
- 11:15Landin's applicative expressions
- 14:46ISWIM and DSL design
- 23:34Structured programming
- 28:11Denotative vs imperative
- 30:20Monads as bridge
- 33:33Monads in category theory
- 36:40Category theory influence
- 39:52Monads and state
- 41:56Monads in Haskell
- 44:04Monad transformers
- 46:52Algebraic effect handlers
- 48:18Higher-order effects in GitHub
- 50:05Effect libraries today
- 50:26Conclusion
