Functional programming in Swift is all the rage, but many of the tools of functional languages don't translate easily to Swift. So much focus on lambdas and monads has caused us to overlook one of the most powerful lessons from decades of functional programming research: the power of strong types.
In this session we'll discuss what makes types weak or strong and how to build simple types that make whole classes of bugs impossible. We'll learn to tear over-complicated types apart and put them back together using simple rules. And we'll learn the basic vocabulary of types so we can talk about why to choose a struct or an enum, when to use an Optional, and how to fix common type mistakes in Swift.