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 import
s 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.