Advanced Type Mechanics is a two-day course for intermediate- to advanced-level Scala users to enhance their understanding of the language through its type system, the foundation upon which the entire language is built.

The course will develop participants’ grasp of concepts like path-dependent and singleton types; projection, wildcard and existential types; kinds, higher-kinded types and type lambdas; type parameters, members and variance; and much more. It then goes further to develop relations between these concepts, to establish an intuition for how the Scala compiler works with types.

Scala 3 provides, in its implementation of the DOT Calculus, a provably-sound foundation that Scala 2 never had, and builds upon this bedrock to provide a variety of new features such as union types, dependent function types and type matches, with additional constraints which help to guarantee typesafety. We will study these new type-level features, and explore the new opportunities they present for existing Scala 2 code.

This course is a complete revision of the successful Advanced Type Mechanics course for Scala 2, with new material introduced for Scala 3, and existing material updated for Scala 3, giving insight into its relevance now and in the future, as the language evolves.