A Gentle, Practical Introduction to Path-Dependent Types


Consider an HTTP API that responds with different fields based on the type of the input provided. How might you build a type-safe client to interact with this API? Is your code littered with Options? Do you resort to casting?

During this talk, we’ll work through a cleaner, safer solution using Scala’s path-dependent types. Along the way, we’ll learn about related concepts such as abstract type members and dependent method types. While these words might sound intimidating (including to this presenter!), they represent simple concepts useful in solving real-world problems.

David van Geest

David van Geest


As a Senior Software Engineer on the Core Team at PagerDuty, David works on mad-scientist projects designed to solve difficult, systemic problems experienced by other engineering teams. This means building services, libraries, or other shared infrastructure, often in Scala.

David lives in Toronto; he enjoys playing board games, cooking, and installing Linux on everything. You can usually find him cycling about the west end in search of tasty food and beverages.