Expanding Phobos from a flat hierachy
Marco Leise
Marco.Leise at gmx.de
Thu Feb 7 08:45:07 PST 2013
Am Wed, 06 Feb 2013 23:06:06 -0500
schrieb Chad Joan <chadjoan at gmail.com>:
> I just want to say "PLEASE YES". Phobos' module hierarchy is currently
> confusing at best, especially with various important elements being
> scattered across std.range, std.algorithm, std.array, and maybe another
> I'm forgetting. Although I can sort of see the logic behind this
> convention, it is very hard to think of a function that operates on
> ranges and automatically know which module to look in. I'm rambling, sorry.
>
> PLEASE YES!
It is true.
I've had the same discussion on IRC a while ago. After
letting off some steam, I had the idea to make a map of
Phobos by functionality instead of module.
Sometimes simple stuff confuses me: is .empty in std.array or
std.range? And why is it not a standard property of arrays?
The module borders seem washy in std.rangorithray.
String formatting is another example with functions spread
over conv/string/format for: 'xformat' (std.string),
'text' (std.conv) or 'formattedWrite' (std.format).
Add manipulation to the list and the function you look for may
even be generalized in std.algorithm, like 'startsWith'.
String slicing/concatenation: 'stripRight' (std.string),
'startsWith' (std.algorithm), 'join' (std.array)
Text I/O: 'readText' (std.file), 'byLine' (std.stdio)
Temporary files: 'tmpfile' (std.stdio), 'tempDir' (std.file)
Charsets: 'toMBSz' (std.windows.charset),
'transcode' (std.encoding), 'toUTF16' (std.utf)
Memory streams: 'MemoryStream' (std.stream),
'OutBuffer' (std.outbuffer)
... and so on ...
--
Marco
More information about the Digitalmars-d
mailing list