On 2/20/12 10:37 AM, foobar wrote:
On Monday, 20 February 2012 at 15:50:08 UTC, Andrei Alexandrescu wrote:
Actually that just shuffles the matter around. Any setup does demand
that some library (in this case most probably the standard library) will
be a dependency knot because it defines the hierarchy that others should
use.

Not accurate. A 3rd party library that want to be compatible will no
doubt depend on the standard library's _exception hierarchy_ but that
does *not* mean it should depend on the parallel functionality in the
standard library. Per our example with IO, if I use tango.io I certainly
do not want my application code to include redundantly both std.io and
tango.io. I wanted to use tango.io as an *alternative* to std.io.

This is a confusion. Using PackageException!"std.io" does not require importing std.io. Conversely, using std.IOException _does_ require importing std.exceptions or whatnot. So from a dependency management viewpoint, PackageException is superior to IOException.

The converse disadvantage is that typos won't be caught during compilation. For example, using PackageException!"sdt.io" will go through no problem, but of course won't be caught by people waiting for a PackageException!"std.io".


Andrei

Reply via email to