Alternative hierarchy proposal.

Ian Lynagh
Fri, 9 Mar 2001 00:46:06 +0000

On Thu, Mar 08, 2001 at 08:24:26PM +0000, Malcolm Wallace wrote:
> Simon Marlow wrote:
> >
> > Here's my attempt at a library hierarchy.  No ASCII art
> Just to let everyone know that Simon's proposed tree is now on the
> web alongside mine.  See:

Ermmm, OK, so what now?

What we currently seem to have seems rather akin to the Bit(s) situation
this is meant to avoid  :-)

Anyway, here are my opinions and an attempt to merge the two together.
Flames^WComments welcome.

Here is a list of common top level hierarchies:

Data Database Debug Graphics Haskell Network Numeric Posix Text
Data Database Debug Graphics Lang    Net     Numeric Posix Text

Personally I prefer the latter list, and as I've said before I think
POSIX would be better split up.

In MW:
* Algebra
    Seems fair enough
* Interface
    Not sure about the name of this - contains GetOpt and Readline
    GetOpt might belong better under parsing somewhere and ReadLine
    in IO? Having just noticed them on SM, they are next to IO under
* Win32
    Dunno what would go in here. Possibly OS.Win32 or something would
    be better regardless to kep the top level branches to a minimum?

In SM:
* System
    THis is equivalent to Haskell.Plus.Unsafe I think. Personally I
    think this is a good idea as it is not implementable in Haskell.
    I'm not sure the Plus distinction is necessary though.
* Source
    This appears to be parsers etc for Haskell code, and I don't see
    why it should be here rather than Text.Haskell next to HTML, XML
* Concurrent
    I don't know anything about this but it looks fair enough
* Parallel
    As the comment is "as hslibs/concurrent/Parallel" should it not go
    under Concurrent?
* Prelude
    MW has Haskell.Language.CoreSyntax which I think makes more sense
    Probably better under Lang.CompilerSpecific.GHC?

There's also the Std vs Non-std top branch debate. I agree with the
non-std myself.

The SM trees in general seem a bit better thought out to me too, e.g.
I don't think Bits or MD5 belong under Data.Encoding.

To summarise I think something like:

Algebra: As MW
Concurrent: As SM plus Parallel
Data: As SM
Database: As SM and MW
Debug: As SM and MW
Graphics: As MW (more detailed than SM)
Lang: As SM, plus CompilerSpecific.*, Prelude, { System.* from SM plus POSIX plus BSD }
Net: As SM (plus a POSIX module if POSIX talks about this)
Numeric: As SM and MW
OSSpecific: As explained
Text: As SM and MW
User: your@email.address gets* off of this

BTW, the first bit of Data is repeated twice on the SM list

Ian Lynagh - <>