On 12/28/2010 03:26 PM, bearophile wrote:
Stanislav Blinov:
...which quickly expands to a lot of *long* import lines, with "don't
forget to add another" constantly pushing the door-bell.
That's redundancy is "making your subsystems interfaces explicit". I see that
you and other people here fail to understand this, or just value a bit of typing more
than a tidy way of coding. To interested people I suggest to read papers about this part
of the Ada design (and generally about module system design).
What I do fail to understand is what should these explicit interfaces
bring *into D*. Until now, you didn't demonstrate anything they would
give that D doesn't already have.
BTW, I forgot to mention one more point: explicit qualification has
significant impact on generic code:
void foo(T)(T t) if (__traits(compiles, bar(t))
{
bar(t);
}
How would that be scalable to new types if bar would have to be
explicitly qualified?
void foo(T)(T t) if (__traits(compiles, pkg.modbar.bar(t))
{
pkg.modbar.bar(t);
}
Now, to extend the range of types accepted by foo(), you *have to*
change pkg.modbar module to introduce bar() for new types, which isn't
always possible or desirable.