It is no secret that imports are one of the most confusing things about some libraries and there has been a lot of work to simplify this. However, I’m still finding that it’s easy to get confused between relative and absolute paths. How many cats, fs2, implicits or io packages are there now? All the interop imports just make it worse and worse.
We can help ourselves by ensuring we use root-based imports, but it’s painfully ugly!
import _root_.io.circe._ import _root_.fs2._ import _root_.cats._
It’d be nice if we cleaned it up a little bit with a symbol alias for
/ (pick one)
import |io.circe._ import /fs2._ import .cats._
and at the same time, ban the creation of packages named
_root_ so that it doesn’t end up becoming a relative name!
This could even be done in parser (taking care with Position), just naively rewriting