std.compress
Diggory
diggsey at googlemail.com
Wed Jun 5 10:45:06 PDT 2013
On Wednesday, 5 June 2013 at 17:21:01 UTC, Jonathan M Davis wrote:
> On Wednesday, June 05, 2013 14:02:37 Jakob Ovrum wrote:
>> We have a standard library in disagreement with the language's
>> encapsulation mechanics. The module/package system in D is
>> almost
>> ignored in Phobos (and that's probably why the package system
>> still has all these little things needing ironing out). It
>> seems
>> to owe influence to typical C and C++ library structure, which
>> is
>> simply suboptimal in D's module system.
>
> I honestly don't see how Phobos is in disagreement with the
> module system. No,
> it doesn't use hierarchy as much as it should, and there are a
> few modules
> that are overly large (like std.algorithm or std.datetime), but
> for the most
> part, I don't see any problem with its level of encapsulation.
> It's mainly
> just its organization which could have been better. My primary
> objection here
> is that it seems ridiculous to me create lots of tiny modules.
> I hate how Java
> does that sort of thing, but there you're _forced_ to in many
> cases, whereas
> we have the opportunity to actually group things together in a
> single module
> where appropriate. And having whole modules with only one or
> two functions is
> way too small IMHO, and that seems to be what we're proposing
> here.
>
> - Jonathan M Davis
I agree with one or two functions it's far too small, but I'm in
favour of having only one or two top-level classes/structs per
module (there will be exceptional cases but in general)
For examples:
std.regex - I think it would be better if each implementation had
its own module, plus a separate module for the parts common to
all of them. Importing std.regex would publicly import the lot
using the new package system.
std.range - module for tests, ie. isXXX and hasXXX, module for
algorithms ie. retro, take, etc., module for class wrappers
std.datetime - split each class/struct into own module, systime
alone is ~8000 lines
More information about the Digitalmars-d
mailing list