Remix.run Logo
archargelod 4 days ago

Using fully qualified imports is a Python tradition.

Python doesn't have a notion of public/private symbols (no, "__" prefix does absolutely nothing). It also doesn't have a good type system, so it can't have function overloading.

This is why you're required to qualify almost all imports in Python, to avoid name clashes.

Nim doesn't have this problem and also "fixes" a lot of other shortcomings[1] of Python.[2]

[1] - https://github.com/yugr/python-hate

[2] - https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programm...

maleldil 3 days ago | parent [-]

It's not only a Python thing. Many modern languages require this as well. Go, Gleam, Rust, etc.

When you're reading Nim code and you see a symbol you don't know, how can you tell where it comes from? In Rust, it's either qualified or you have to explicitly import it. What do you do in Nim?

archargelod 3 days ago | parent | next [-]

This is solved by tooling. LSP will get you to symbol definition in a single key press. That's a lot faster then looking it up manually.

In my experience, it's even faster to git clone, open a project in neovim and navigate with LSP than browsing code with some online interface.

archargelod 3 days ago | parent | prev [-]

> Many modern languages require this as well. Go, Gleam, Rust

All the languages you listed do not support function overloading. Qualified imports and namespaces exist to avoid name clashes first, dependency tracking is just a bonus (and a chore).