Proposal: module namespaces.

Malcolm Wallace
Tue, 27 Feb 2001 16:42:16 +0000

Frank writes:
> I wish we could agree on capitalization of acronyms. On one hand, we have:
>     Gtk, Jpeg, Html, Xml
> but on the other:

Hmm, yes.  Actually, my preferred solution would be to use acronyms
only when they are extremely well known, and otherwise to spell things
out in full.  So
      Gtk, Jpeg, Html, Xml, Fifo, UI, Ppm, IO, URL, CGI
      ObjectDataBase, Foreign, Utrecht, PrettyPrint, SignalProcessing,
      FourierTransform, GroeltzmanFilter ...

But these things are inevitably a matter of taste.  Some people detest
the MixedUpperAndLower style.

>   I think the top-level "Interface" is better named "Console", to contrast
>   with "Graphics".

Cool.  I like it.

>   I would prefer short names to long. So: "Text.Parse" rather than
>   "Text.ParserCombinators", "Data.Struct" rather than "Data.Structures",
>   "Graphics.Draw" rather than "Graphics.Drawing", etc. Generally, the
>   ancestors of a short name should give enough context to disambiguate it.

In terms of software engineering, I think fully descriptive names
are better than abbreviations.  On the other hand, no-one likes names
that are long just for the sake of completeness.

  * Text.Parse could be ambiguous - does it contain combinator
    libraries, or support libraries for Happy?  Or maybe: Text.Parser
    - does it indeed parse text according to some syntax/grammar,
    or does it just contain functions that help you to parse text?
    Text.ParserCombinators is at least clear.

  * Graphics.Draw might indeed be better than Graphics.Drawing

  * Data.Struct - I don't like it - it sounds like C!

>   I would move "Format" out of "Graphics" and into "Data.Encoding". (But
>   maybe "Encoding" is intended to be a collection of things of `universal'
>   encodings, which clearly "Jpeg", for example, is not.)

Indeed, we do need to guard against overlapping categories.  I don't
know about this particular case - Graphics.Format seems more natural to
me.  As you say, it contains datatype-specific codecs, not universal ones.

>   Change "Data.Structures.Trees" and "...Graphs" from plural to
>   singular. Same for "Data.Encoding.Bits". But not "Data" to "Datum"! :)

Like Data.Structure.Tree etc?  Yes, looks ok.

Data.Encoding.Bits is a special case.  There are two current bit
libraries, one called Bit (in nhc98), the other called Bits (in ghc).
They even have different interfaces.  Sadly, inconsistencies like this
have grown up over the years.  But I think we can turn the situation
into a more positive one by permitting the distribution of competing
libraries - just like for pretty-printers, we can extend the namespace
to have both:


Mechanism, not policy.

>   Maybe change "Data.Structures" and "Data.Encoding" to one name each,
>   "DataStruct" and "DataEncoding" (or "Encoding" or "Codec"). The reason is
>   that it's not clear to me why they belong in the same subtree except for
>   the fact that in English both terms start with "Data". In other words, we
>   should try to group things semantically rather than lexically.

I quite like the name Codec.  MD5 is not a codec as such - more of
a checksum really.  For me, data structures and data codecs belong
semantically in the same subtree - it isn't just a lexical grouping.

Thanks for your suggestions!