I think the readability issue is a thrown aside a little too lightly. Yes, in this particular example readability doesn’t suffer from wildcard imports, but in plenty of real world code it does: when there are a dozen or so imports of unfamiliar packages it’s really nice to see at a glance exactly where code and data are flowing.
Unlike the Python example above, there is no ambiguity about which sqrt to call in these two cases (nor is there any overwriting happening) because Nim is statically typed and the compiler can disambiguate between the functions of the same name but with different signatures: […]
TL;DR: It’s a terrible idea to rely on the method overloading resolution to have the compiler sort out which method you want to call.
I think the readability issue is a thrown aside a little too lightly. Yes, in this particular example readability doesn’t suffer from wildcard imports, but in plenty of real world code it does: when there are a dozen or so imports of unfamiliar packages it’s really nice to see at a glance exactly where code and data are flowing.
TL;DR: It’s a terrible idea to rely on the method overloading resolution to have the compiler sort out which method you want to call.
Oh, and don’t use star imports.
As much as i like Nim, this is the one thing i think it’s got dead wrong, explicit code is always better than implicit magic.
Besides it makes for nicer tooling when you can inspect a module or whatever.