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.

Reply via email to