Implicits Revisited
summary
An empirical study mines 7,280 projects (18M LOC, 8M implicit call sites, 370k implicit declarations) and finds implicits pervasive but error-prone: name-based resolution causes shadowing and local coherence ambiguities, implicit conversions and wildcard imports hide surprising bindings. Scala 3 redesign replaces ad-hoc implicits with Givens and a summon API, models conversions via a Conversion type, adds explicit selectors like import given and import-by-type, and provides automatic rewrites plus dotty-based tooling for gradual migration toward safer, more predictable implicit term synthesis.
AI-written summary · about
chapters (15)
- 0:00Start
- 3:20Why Did the Language Have Implicit Conversions
- 4:55Implicit Parameters
- 5:48Scala Object-Oriented Languages
- 6:52Basics of Implicit Parameters
- 9:07The Implicit Argument Must Be Accessible at the Point of Call by a Simple Identifier
- 9:20Locality
- 11:59Mistakes
- 14:11Local Coherence
- 16:45Implicit Conversions
- 23:02Scala 3
- 30:10The Parameter Clauses
- 32:36Type Classes
- 36:22Imports
- 39:55Migration
related talks
29mIMPLICITS IN SCALA 3
29mSay goodbye to implicits - contextual abstractions in Scala 3
48mKeynote: Some Mistakes We Made When Designing Implicits
46mImplicits Inspected and Explained
01h 04mKeynote - What to Leave Implicit
36mSay goodbye to implicits contextual abstractions in Scala 3
43mDon't Fear the Implicits: Everything You Need to Know About Typeclasses
30mLessons Learned from 15 Years of Scala in the Wild
