On Thu, 05 Apr 2012 17:02:13 -0400, Jonathan M Davis <[email protected]> wrote:

On Thursday, April 05, 2012 15:26:14 Steven Schveighoffer wrote:
On Thu, 05 Apr 2012 14:33:22 -0400, Jonathan M Davis <[email protected]>

wrote:
> On Thursday, April 05, 2012 11:30:26 Steven Schveighoffer wrote:
>> A couple issues that still need consideration:
>>
>> 1. If std.algorithm the module becomes std.algorithm the package, what
>> happens with ddoc? We probably *do* need a compiler solution to this.
>
> That's assuming that you insist on keeping all of the documentation in
> one
> file. That arguably defeats the purpose of splitting up the modules. If
> there
> isn't enough in the module to split the documentation, then why do you
> need to
> split the module?

I thought the whole point was code maintenance? Not documentation
splitting... I would have expected people to continue to treat
std.algorithm like it was one module, even though it imports several
sub-modules for its implementation.

If the module isn't large enough to be split for documentation, I find it hard
to believe that it needs to be split for maintenance.

Why do we ever need to split modules for documentation? Just fix the doc generator so it's not as monolithic. For instance, have one page per class or struct.

And if all you care
about is sub-modules for implementation and want all of the functions in the same module still, then this DIP is pointless. All you have to do is declare undocumented sub-modules which hold the various implementations and have the actual module call them. We already do this sort of thing in Phobos to get
around static destructors screaming about circular dependencies.

You are starting to see my point :) But I think the issue is not so much that you are splitting the implementation, but splitting up the API into related modules.

For example, std.container. Imagine we have a robust set of 15 containers. Why should those all be in one file? They have nothing to do with eachother except they are in the same namespace. Why does RedBlackTree need to be able to access the internals of Array?

As the writer of RedBlackTree, I want to be able to test and develop my container without having to worry about the rest of std.container. But I also would like to have the FQN of it to be std.container.RedBlackTree. Public imports allow this *today* without any changes.

Note that size isn't so much an issue for me as being able to compartmentalize and develop individual pieces of a module.

-Steve

Reply via email to