Adding kind-polymorphism to the Scala programming language
summary
Argues that adding kind-polymorphism to Scala lets type parameters accept constructors of any arity, implemented as a minimal prototype in the Typelevel Scala prototype and later adopted in Dotty/Scala 3. Demonstrates it shrinks shapeless-derived boilerplate (generic/generic1 families), exposes poly-kinded application and GADT encodings, and keeps JVM/runtime representation unchanged. Prototype compiles and simplifies signatures but application-site ergonomics remain clunky and further language-level support is still exploratory.
AI-written summary · about
chapters (18)
- 0:00Intro
- 0:46What is kindpolymorphism
- 8:49Shapeless
- 21:19Kind
- 22:27Generic
- 23:54The first hurdle
- 24:28Encoding
- 27:24Type parameters
- 29:07Polytype application
- 29:22Polytype adoption
- 30:43Polytype examples
- 31:17Application example
- 32:02Modeling constraints
- 33:01Semantic constraints
- 34:23Examples
- 35:31Questions
- 38:26Jurys Paradox
- 39:07Subtyping
related talks
51mAdding Kind-polymorphism To The Scala Programming Language
46mAdding kind-polymorphism to the Scala programming language
42mPolymorphic Function Types in Scala 3
45mHow to be polymorphic in Scala
40mPolymorphic Function Types in Scala 3
41mPolymorphism in Scala
32mUnderstanding the Type System of Scala 3
30mDotty and types: the story so far
