Jon Pretty will be teaching the two-day Advanced Type Mechanics course on 10-11 December 2019. The purpose of the course is to give the attendees a full and correct understanding of the Scala type system, including many of its lesser-known details and corner-cases, and to illustrate ways in which this knowledge may be applied to some practical use-cases. Along the way, the course will help develop the right intuitions for understanding the type system.
The topics covered in the course include subtyping, singleton types, existential types, type paths, erasure, type bounds, variance, kinds, type unification, least upper-bounds, implicit search and prioritization, chaining implicits, typeclasses, type inference, and type-level computations. Many participants may already have at least some understanding of these concepts, but in most cases, each topic will be covered in more depth.
The course assumes that all the attendees will have an adequate understanding of most aspects of programming in Scala, but avoids (as much as possible) spending any time on features that are not related to the type system. Participants should have at least one year of working full-time with Scala as an absolute minimum for the course. The course does not use or require knowledge of any third-party Scala libraries, such as Shapeless: the goal is not to teach any of the specifics of these libraries, but instead to provide the context by which they may be understood.