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 System. * 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 etc * 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 * GHC 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 address.email.your.* off of this BTW, the first bit of Data is repeated twice on the SM list Thanks Ian -- Ian Lynagh - <igloo@earth.li> http://c93.keble.ox.ac.uk/~ian/haskell/