For weird cases like this, I'll put prototypes with the documentation in a 
version(DDoc) block.  It means more maintenance though.

On Sep 16, 2010, at 6:52 AM, David Simcha wrote:

> I'd like to see a way to make Ddoc produce documentation for the public 
> imports of a module.  This way we could make a simple, coarse-grained import 
> system for the user (i.e. import std.container and you've got every container 
> you could possibly want), but have each container be implemented in its own 
> file in std.containerimpl.somecontainer for development convenience and 
> publicly imported by std.container.  The only major problem I see with this 
> is Ddoc, as mentioned above.
> 
> The bottom line is that, when using D, I hate being forced to write tons of 
> import statement boilerplate to do anything non-trivial (what you get if you 
> make the import system fine-grained) but when developing Phobos I hate having 
> to scroll through 6,000 line files like std.algorithm (what you get when you 
> make the import system coarse-grained).  I'd like to clean this up from the 
> developer's perspective, but in a way that's transparent to the user.
> 
> On Thu, Sep 16, 2010 at 9:46 AM, Jacob Carlborg <d...@me.com> wrote:
> I don't think it's the number of modules that makes it hard, it's because of 
> the organization of the modules. Too many modules in one package (std) and 
> too much code in one module. Take std.container for example, every container 
> type in on module, that's just insane. It should clearly be, in my opinion, a 
> container package (or actually I would prefer it to be called collection) and 
> one module per container type. std.container is almost 3500 LOC and have four 
> (or something like that) container types, what happens when (if) we get more 
> container types like different types of trees and other containers, just put 
> everything in std.container? That is just too much code in one module. Just 
> my opinion.
> 
> 
> /Jacob Carlborg
> 
> On 16 sep 2010, at 15:30, Lars Tandle Kyllingstad wrote:
> 
> > I disagree,  I like the flat hierarchy.
> >
> > And just to clarify my earlier e-mail, for which I may have chosen a bad
> > subject:  I do not think that the number of modules in Phobos is too
> > high in general.  I think it has too many *obsolete* modules, and too
> > many modules with very limited functionality.
> >
> > If we got rid of the cruft that has been accumulating, and merge some of
> > the smaller modules into larger ones, Phobos would seem a lot less
> > unwieldly.
> >
> > -Lars
> >
> >
> >
> > On Thu, 2010-09-16 at 14:54 +0200, Jacob Carlborg wrote:
> >> I think it's time for Phobos to start using sub packages and drop the flat 
> >> module hierarchy.
> >>
> >> On 15 sep 2010, at 13:56, Lars Tandle Kyllingstad wrote:
> >>
> >>> I said in an earlier e-mail that I think std.file, std.path, and
> >>> std.stdio should remain separate modules.  However, I do think that, for
> >>> a library with a flat module hierarchy, Phobos has acquired way too many
> >>> modules.  Some of them should (and will) be removed, and some could be
> >>> merged.
> >>>
> >>> The following are my suggestions for how to trim the Phobos module list
> >>> a bit.  At the bottom I'll show the resulting module list.
> >>>
> >>>
> >>> Modules which could be removed, most of them *right now*, because they
> >>> are superseded by other modules or built-in functionality:
> >>>
> >>>       std.bind       - use lambdas or nested functions instead
> >>>       std.boxer      - superseded by std.variant
> >>>       std.contracts  - superseded by std.exception
> >>>       std.cstream    - superseded by std.stdio.File
> >>>       std.demangle   - superseded by core.demangle
> >>>       std.iterator   - superseded by std.range
> >>>       std.openrj     - obscure format, better to use std.json
> >>>       std.perf       - superseded by StopWatch
> >>>       std.regexp     - superseded by std.regex
> >>>       std.stream     - ranges are the way to go
> >>>       std.syserror   - superseded by std.windows.syserror
> >>>       std.c.*        - superseded by core.stdc.* and core.sys.*
> >>>
> >>> Modules for which there is no documentation on the D home page, and
> >>> which I suspect nobody are using:
> >>>
> >>>       std.loader
> >>>       std.stdarg
> >>>       std.typelist
> >>>
> >>> Modules which can be merged into a single one, possibly after
> >>> substantial/complete rewrites:
> >>>
> >>>       std.compiler + std.cpuid + std.system (= std.sysinfo?)
> >>>       std.ctype + std.uni (= std.character?)
> >>>       std.date + std.dateparse + std.gregorian + std.stopwatch
> >>>         (= std.datetime?)
> >>>       std.encoding + std.utf (= std.encoding?)
> >>>       std.socket + std.socketstream (= std.socket (or std.net?))
> >>>       std.typecons + std.typetuple (= std.types?)
> >>>
> >>> And finally, some renaming suggestions (which were actually posed by
> >>> Andrei):
> >>>
> >>>       std.conv -> std.convert
> >>>       std.stdio -> std.io
> >>>
> >>>
> >>> All this gives us the following, nice and short (well... shorter, at
> >>> least) module list:
> >>>
> >>>       std.algorithm
> >>>       std.array
> >>>       std.base64
> >>>       std.bigint
> >>>       std.bitmanip
> >>>       std.character
> >>>       std.complex
> >>>       std.concurrency
> >>>       std.container
> >>>       std.convert
> >>>       std.datetime
> >>>       std.encoding
> >>>       std.exception
> >>>       std.file
> >>>       std.format
> >>>       std.functional
> >>>       std.getopt
> >>>       std.intrinsic
> >>>       std.io
> >>>       std.json
> >>>       std.math
> >>>       std.md5
> >>>       std.metastrings
> >>>       std.mmfile
> >>>       std.numeric
> >>>       std.outbuffer
> >>>       std.path
> >>>       std.process
> >>>       std.random
> >>>       std.range
> >>>       std.regex
> >>>       std.signals
> >>>       std.socket
> >>>       std.stdint
> >>>       std.string
> >>>       std.sysinfo
> >>>       std.traits
> >>>       std.types
> >>>       std.variant
> >>>       std.xml
> >>>       std.zip
> >>>       std.linux
> >>>       std.windows
> >>>
> >>>
> >>> Just something to think about.
> >>>
> >>> -Lars
> >>>
> >>> _______________________________________________
> >>> phobos mailing list
> >>> phobos@puremagic.com
> >>> http://lists.puremagic.com/mailman/listinfo/phobos
> >>
> >
> >
> > _______________________________________________
> > phobos mailing list
> > phobos@puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/phobos
> 
> --
> /Jacob Carlborg
> 
> _______________________________________________
> phobos mailing list
> phobos@puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
> 
> _______________________________________________
> phobos mailing list
> phobos@puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos

_______________________________________________
phobos mailing list
phobos@puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to