Phrases like "free monads" and "finally tagless" get thrown around in the Scala community like they're going out of fashion. But what do they mean and why are they so popular? In this talk we will discuss "interpreters", an essential functional programming pattern that underpins these terms. We will show how any problem in functional programming can be described using the interpreter pattern, and how modelling things this way naturally gives rise to abstractions like the free monad and encodings like finally tagless. Required knowledge Attendees should have a good knowledge of Scala, including patterns such as algebraic data types (sealed traits and case classes) and type classes (implicit parameters and values). Learning objectives This talk will provide an understanding of the interpreter pattern and its ubiquitousness in functional programming. We will cover several types of interpreter, including the monadic interpreters that motivate the free monad. Finally, we will show how interpreters can be composed and how this motivates encodings such as coproducts and finally tagless. Dave is a developer, trainer, and partner at Underscore. He has spent over a decade programming, speaking at conferences, and writing books on functional programming. In his spare time he enjoys making maps, playing with cats, and taking short trips in his space ship.