D supports local imports and has to deal with overloading. Nim supports the following: from foo import nil block: # Start of scope template someSymbolFromFoo(a: int): int = foo.someSymbolFromFoo(a) type SomeTypeFromFoo = foo.SomeTypeFromFoo # Use SomeTypeFromFoo and someSymbolFromFoo # Pop scope. SomeTypeFromFoo and someSymbolFromFoo are not defined again.
So we can local "import" symbols from another module "artificially", we just need to automate it a bit =)