Effects: to be or not to be?
summary
Compares concrete effect approaches: Java checked exceptions (low location precision, brittle coupling), eager Futures (high location precision but viral syntax), functional IO like ZIO (lazy descriptions, strong resource safety, referential transparency, but high syntax overhead and viral APIs), Unison abilities (explicit bangs showing effects), and a Loom+capabilities prototype (low syntax cost, unclear safety). Argues tradeoffs are real: cannot simultaneously get low syntax overhead, high location precision and full referential transparency, so pick the two you need for failure management, resource safety and tooling.
AI-written summary · about
chapters (18)
- 0:00Introduction to effects
- 2:32Benefits of static typing
- 5:19Defining side effects
- 8:30Examples of effects
- 11:22What is an effect system
- 14:13Motivation for effect systems
- 17:27Implementing effect systems
- 19:12Checked exceptions in Java
- 24:08Why checked exceptions failed
- 28:03Error handling in static typing
- 28:25Futures as effect system
- 32:41Functional effect systems with ZIO
- 37:18ZIO Direct for syntax reduction
- 39:29Unison’s ability-based effects
- 43:02Capabilities with Project Loom
- 45:29Trade-offs in effect systems
- 46:32Company introduction
- 46:54Q&A
related talks
42mThe making of an IO
23mEffects types in Scala - how to choose one
15mEffects as Capabilities: Effect Handlers and Lightweight Effect Polymorphism
31mPick a (Effect) Lane: A comparison of direct-style Scala vs effect systems
43mSurviving a world overflowing with effects
19mAssociated Effects: Flexible Abstractions for Effectful Programming
02mEffects, Algebraically yours ..
54mRevisiting the Evolution of Effects (Invited Talk)
