izumi-reflect: a useful Scala Typer Simulator

By Pavel Shirshov

Elevator Pitch

In this talk we will share our experience of implementing lightweight alternative for scala-reflect by building a Scala Typer Simulator using Typed Lambda Calculus

Description

Reflection is hard and scala-reflect is one of the most complicated and problematic parts of Scala 2. We have implemented a lightweight alternative for scala-reflect, izumi-reflect, which supports subtype checks and uses a simplified, but “good enough” model of Scala typesystem and is based on Typed Lambda Calculus. Izumi-reflect has been used to implement distage DI framework and will power the new value-composable encoding of ZIO Environment as a cross-platform & cross-version alternative to scala-reflect’s TypeTag. In this talk we will explain how did we do it and why Lambda Calculus may be more useful and beneficial than many engineers get used to think.