Alternative proposal for implicits

I’m playing with the idea of adding a capability to include lenses of entire packages:

lens MyApp includes org.thirdparty.extensions._

I imagine this would be somewhat a crucial feature; otherwise, users would need to manually include many lenses; or alternatively, library authors would need to work hard assembling user friendly lenses.

This further stretches the line between lens and object, or rather between implicit resolution and name resolution (import). Perhaps simple implicit resolution deserve the same less verbose syntax as imports provide for name resolution:

import Foo
// short for:
import name Foo

interpret org.thirdparty.typeclasses._
// short for:
import lens org.thirdparty.typeclasses._

I still believe it is essential to separate between name resolution and implicit resolutions using a different “import” keyword for either case, and by grouping “named objects” under a different component (object) than implicit interpretations (lens).

Also, implicit conflict resolution still need to be added to the language, and I find it easier – syntactically speaking – to make it part of the modular component (lens) rather than the resolution construct (interpret), but like with any syntax-related decision there is a lot of experimentation that needs to be done to assert which way is better.