Pavel Shirshov & Michael Feldman – distage: Modern Dependency Injection for Scala

Many Scala developers nowadays consider using Dependency Injection frameworks an anti-pattern incompatible with modern FP settings.
We argue that it’s just a consequence of a bad experience with legacy Java runtime reflection-based implementations that lack features important for modern functional programming, such as a first-class support for higher-kinded types.
We argue that as a paradigm for structuring purely functional programs, DI with automatic wiring compares favorably against implicits, monad transformers, free monads, algebraic effects, cake pattern et al, enabling scaling and a degree of modularity unachievable by any manual wiring approach.
This talk covers DIStage – a transparent, flexible and efficient DI framework for Scala that enables late binding, testability, effect separation and modular resource management at scale, working with, instead of compromising the Scala type system.



Leave a Reply

Your email address will not be published. Required fields are marked *