Taking away Mutation
summary
Presents an encoding that ties mutation rights to explicit capability objects using singleton types so mutable fields can be constructed in-place then rendered immutable by rescinding the capability, uses contextual functions to avoid noisy arguments, and exposes a transient scoping primitive transiently for automatic key allocation. Prototype compiles against Scala with minimal compiler tweaks, retrofits List and ListBuffer in the standard library, notes runtime overhead unless implicits are erased, and acknowledges missing capture-tracking integration for full safety.
AI-written summary · about
chapters (7)
- 0:00Introduction
- 2:27Acceptable mutation
- 4:40Safe mutable structures
- 8:52Invisible mutation
- 11:02Standard library case studies
- 13:17Future work and capture tracking
- 14:22Q&A
related talks
25mImmutable APIs and mutable internals: a Scala design case study
32mEffects as Capabilities
35mIntroducing Typelevel Scala into an OO environment
41mOn track with tracked
01h 04mKeynote - What to Leave Implicit
01h 03mWhere Are We With Scala's Capabilities?
29mADVENTURES IN META-PROGRAMMING
39mA few tips on modelling things in Scala
