It's always ironic to me that people think implicits reduce code clarity, and yet those same people use runtime DI frameworks and possibly AOP. Scala implicits can in my opinion be thought of as a simple compile-time lexically-scoped DI framework. It's very much a compile-time equivalent of the @Autowired or @Inject annotation in runtime DI frameworks, except it has the benefit of lexical scoping.<p>The great thing about implicits is that errors occur at compile-time and your IDE can give you all the information you need to understand what implicits are in play. On the other hand, there is no tool in the world that will save you from a complex spring-based application with strange initialization order errors, certain features silently not working for who knows what reason, and often barely-comprehensible stacktraces.
I haven't used implicit scopes in Scala, but after watching a demo of them, I think it's a feature that can easily be abused and cloud code clarity. Scala more than almost any other language in it's class seems particularly full of such features.<p>I'd love to hear from some seasoned Scala folk: what do you think of these new features?