izumi-reflect: a useful Scala Typer Simulator

By Pavel Shirshov

You must be logged in to access this page

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.