Hierarchy layout
Malcolm Wallace
malcolm@abbess.demon.co.uk
Thu, 22 Mar 2001 10:18:52 +0000
Modulo some discussion about the role of Lang, I think we have
come to a reasonable agreement about the general rules for
constructing a library hierarchy layout.
To help further discussions, I've pulled together lots of
the ideas expressed about individual modules, their names,
and their locations. Here is a complete revised hierarchy
tree proposal. It is largely based on Simon's proposal,
modified in the light of all the comments on the list, with
a few extra tweaks of my own.
I have tried to spell names out in full rather than use
abbreviations, but in some cases, it was clearer to rename
a module altogether than to expand an abbreviation.
Regards,
Malcolm
------------
Prelude -- Haskell98 Prelude
ShowFunctions -- small 'obvious' additions to the Prelude
Data
Bits
Char -- H98
Complex -- H98
Either -- H98
Int
Maybe -- H98
List -- H98
PackedString
Ratio -- H98
Word
IORef
STRef
Binary -- Haskell binary I/O
Digest
MD5
... -- others (CRC ?)
Structures -- top-level? or should it be Data.Structures?
Array -- Haskell 98 Array library
Overloaded -- (opt) IArray - GHC's overloaded arr libs
Mutable -- (opt) MArray
IO -- mutable arrays in the IO/ST monads
ST
Trees
AVL
RedBlack
BTree
Queue
Bankers
FIFO
Collection
Graphs
FiniteMap
Set
Memo -- (opt)
Unique
Monad -- Haskell 98 Monad library
ST -- ST defaults to Strict variant?
Strict -- renaming for ST
Lazy -- renaming for LazyST
Either -- monad libraries
State
etc.
Algebra
DomainConstructor -- formerly DoCon
Geometric -- formerly BasGeomAlg
Database
MySQL
PostgreSQL
ODBC
Debug
Trace
Quickcheck
Observe -- choose a default amongst the variants
Textual -- Andy Gill's release 1
ToXmlFile -- Andy Gill's XML browser variant
GHood -- Claus Reinke's animated variant
Edison -- (opt, uses multi-param type classes)
Prelude -- large self-contained packages should have
Collection -- their own hierarchy? Like a vendor branch.
Queue -- Or should the whole Edison tree be placed
... -- under [Data.]Structures?
FileFormat -- 'Codec' might be a more accurate name?
Compression
Gzip
Bzip2
Graphics
Jpeg
Ppm
Png
Audio
Wav
Mp3
Video
Mpeg
QuickTime
Avi
Foreign
Ptr
StablePtr
ForeignPtr -- rename to FinalisedPtr? to void confusion with
Foreign.Ptr
Storable
Marshal
Alloc
Array
Errors
Utils
C
Types
Errors
Strings
Graphics
UI
Gtk
FranTk
Fudgets
CleanIO
Drawing
HOpenGL
Format -- use FileFormat.Graphics instead
Language
Haskell -- hslibs/hssource
Syntax
Abstract
Core
Lexer
Parser
Pretty
Python?
C?
Numeric
DSP
FastFourierTransform
Noise
Oscillator
Network -- won't need to be optional (will use FFI only)
Socket -- redesign (merge w/ SocketPrim)
BSD -- remove??
URL
CGI -- one in hslibs is ok?
System
IO -- H98 + IOExts - IOArray - IORef
Directory
Select
Console
GetOpt
Readline
Posix -- redesigned, use FFI only
IO -- there was a suggestion to split Posix into
Process -- separate chunks like IO + Process
Win32 -- the full win32 operating system API
Mem -- rename from cryptic 'GC'
WeakPointer -- (opt)
StableName -- (opt)
Time -- H98 + extensions
Locale -- H98
CPUTime -- H98
-- split H98 "System" (too generic) into:
Exit
Environment (getArgs, getProgName, getEnv ...)
Control
Exception -- (opt)
Concurrent -- as hslibs/concurrent
CVar -- Most of these type names are cryptic
Chan
MVar
Merge
QSem
QSemN
SampleVar
Semaphore
Parallel -- as hslibs/concurrent/Parallel
Strategies
Text
Regex -- previously RegexString
PrettyPrinter -- default (HughesPJ?)
HughesPJ
Wadler
...
Html -- HTML combinator lib
Xml
Combinators
Parse
Pretty
Types
ParserCombinators -- no default
Parsec
Hutton_Meijer
...
Type
Generics -- (opt)
Dynamic -- (opt)
GHC
Primitives
UnboxedTypes
...
Nhc
Stuff
------------