Hi Dick,

> inject[] can fail with a runtime error if no binding is supplied, while injectOptional always avoids a runtime error, since there is always a default to fall back on

This may involve avoiding a runtime error, but offers no guarantees in terms of whether the default binding is the correct one. Could it not be better to have a runtime failure occur in order to prompt the correction of this problem in the configuration (it would fail very early, on app startup)? This is indeed the practice of Guice and Spring i.e. they fail early at runtime if there are binding issues.

I'm guessing that Type Classes would improve things here as you suggest.

Christopher