H. S. Teoh:

Is there any reason whatsoever that the compiler should resolve "S" to the module rather than the struct defined by the eponymous module?

For DMD choosing one or the other is arbitrary. It's a defect of the way the D module system is designed. This problem is _absent_ in the Python module system.

Maybe one way to reduce a bit this pain source in the D module system is to forbid name clashes, this means the compiler statically forbids a module "foo" to contain the name "foo".


Given that in D, private applies per module, it's quite often desirable to name the module after the single class/struct that it defines. However, this name conflict makes this scheme rather painful to use. :-(

In D it's better to give them different names. Like a class "Set" is better to go in a module named "sets".

Bye,
bearophile

Reply via email to