distage: Staged Dependency Injection

distage is a pragmatic module system for Scala that combines simplicity and reliability of pure FP with extreme late-binding and flexibility of runtime dependency injection frameworks such as Guice.

distage is unopinionated, it’s good for structuring applications written in either imperative Scala as in Akka/Play, or in pure FP Tagless Final Style

Further reading:

PPER

See PPER Overview