Rethinking Effects with Effect Systems
summary
Effect systems are presented as a way to write normal, readable code while keeping effects local: code uses direct style descriptions of operations and separate handlers that delimit where effects can occur, improving substitution-based reasoning and composition. Scala 3 demos use capture checking to prove no references escape a scope, enabling safe region-based allocation (arena allocation) and automatic deallocation. Runtime support captures continuations under the hood to provide efficient handlers, enabling proper tail calls and lower overhead than library-level monad encodings.
AI-written summary · about
chapters (14)
- 0:00Introduction
- 1:04Functional programming defined
- 3:30Core hypothesis
- 5:55Substitution in programming
- 8:48Effects break substitution
- 11:57Effects and side effects
- 13:24Solving effects with effect systems
- 16:49Isolating effects with handlers
- 19:15Effect systems vs monads
- 24:08Benefits over monads
- 26:19Implementing with type systems
- 29:02Region-based memory with capture checking
- 31:50Runtime support
- 33:12Q&A
related talks
44mEffects, Algebraically yours ..
43mSurviving a world overflowing with effects
31mThe Eff monad, one monad to rule them all
50mFunctional Programming with Effects
01h 01mLeaving side effects aside
02mEffects, Algebraically yours ..
01h 06mThe Evolution of Effects
39mDesigning software with effects systems
