<para>We first classify each node in the hierarchy according to
one of the following terms:</para>
+ ToDo: unpublished interfaces.
+
<variablelist>
<varlistentry>
<term>Allocated</term>
<para>The <literal>User</literal> hierarchy is reserved for
users: a user may always use the portion of the hierarchy
which is formed from his/her email address as follows:
- replace the <literal>@</literal> by a <literal>.</literal>,
- reverse the order of the components, capitalise the first
- letter of each component, and prepend
- <literal>User.</literal>. For example,
+ replace any <quote><literal>.</literal></quote>s in the
+ username (before the <literal>@</literal>) with
+ <quote><literal>_</literal></quote>, replace the
+ <quote><literal>@</literal></quote> by a
+ <quote><literal>.</literal></quote>, reverse the order of
+ the components, capitalise the first letter of each
+ component, and prepend
+ <quote><literal>User.</literal></quote>. For example,
<literal>simonmar@microsoft.com</literal> becomes
<literal>User.Com.Microsoft.Simonmar</literal>.</para>
</listitem>
are never grouped by standards compliance, portability,
stability, or any other property.</para>
</blockquote>
+
+ <para>There are some other considerations when choosing where to
+ place libraries. Where possible, choose a layout that finds a
+ good compromise between depth of nesting and logical grouping of
+ functionality; for example, although the <literal>Text</literal>
+ hierarchy could logically be placed as a child of
+ <literal>FileFormat</literal>, we choose not to because
+ <literal>Text</literal> is ubiquitous and we don't want to have
+ to type the extra component all the time.</para>
+
+ <para>Also consider consistency: if a particular sub-hierarchy
+ provides similar functionality to another sub-hierarchy in the
+ tree, then preferably the structure of the two subtrees should
+ also be similar. For example: under
+ <literal>Language.Haskell</literal> we have children
+ <literal>Syntax</literal>, <literal>Lexer</literal>,
+ <literal>Parser</literal> etc., so under
+ <literal>Language.C</literal> we should have a similar
+ structure.</para>
</sect2>
<sect2 id="module-naming-convention">
<literal>Foreign</literal>, <emphasis>ToDo: what
else?</emphasis>.</para>
+ <para>There is one further requirement: only licenses approved by
+ the Open Source Initiative may be used with the core libraries.
+ See <ulink url="http://www.opensource.org//">The Open Source
+ Initiative</ulink> for a list of approved licensees.</para>
+
<para><emphasis>ToDo: include a prototype BSD license
here</emphasis>.</para>
</sect1>
-
+
<sect1 id="versioning">
<title>Versioning</title>
<para></para>
-- Stability : experimental | provisional | stable
-- Portability : portable | non-portable (<replaceable>reason(s)</replaceable>)
--
--- $Id: libraries.sgml,v 1.5 2001/08/30 13:36:00 simonmar Exp $
+-- $Id: libraries.sgml,v 1.6 2001/12/21 15:07:26 simonmar Exp $
--
-- <replaceable>Description</replaceable>
-----------------------------------------------------------------------------
<variablelist>
<varlistentry>
- <term><literal>$Id: libraries.sgml,v 1.5 2001/08/30 13:36:00 simonmar Exp $</literal></term>
+ <term><literal>$Id: libraries.sgml,v 1.6 2001/12/21 15:07:26 simonmar Exp $</literal></term>
<listitem>
<para>is optional, but usually included if the module is
under CVS or RCS control.</para>
Numeric -> Numeric
added showHex, showOct, showBin & showIntAtBase from NumExts,
+ (not exported yet - these aren't H98)
but left out floatToDouble & doubleToFloat (realToFrac is more general).
System -> System.Exit, System.Environment, System.Cmd
Directory -> System.IO.Directory
Ix -> Data.Ix
Locale -> System.Locale
+ Maybe -> Data.Maybe
Monad -> Data.Monad
Random -> System.Random
Ratio -> Data.Ratio