The Haskell Library Hierarchy
Algebra
DomainConstructor -- formerly DoCon
Geometric -- formerly BasGeomAlg
Control
Exception -- (opt, inc. error & undefined)
Concurrent -- as hslibs/concurrent
Chan -- these could all be moved under Data
MVar
Merge
QSem
QSemN
SampleVar
Semaphore
Parallel -- as hslibs/concurrent/Parallel
Strategies
Monad -- Haskell 98 Monad library
ST -- ST defaults to Strict variant?
Strict -- renaming for ST
Lazy -- renaming for LazyST
State
Error
Identity
Monoid
Reader
Writer
Cont
Fix -- to be renamed to Rec?
List
RWS
Data
Binary -- Binary I/O
Bits
Bool -- &&, ||, not, otherwise
Tuple -- fst, snd
Char -- H98
Complex -- H98
Dynamic
Either
Int
Maybe -- H98
List -- H98
PackedString
Ratio -- H98
Word
LargeWord -- Word128 etc., from crypto
IORef
STRef -- Same as Data.STRef.Strict
Strict
Lazy -- The lazy version (for Control.Monad.ST.Lazy)
Binary -- Haskell binary I/O
Digest
MD5
... -- others (CRC ?)
Array -- Haskell 98 Array library
Unboxed
IArray
MArray
IO -- mutable arrays in the IO/ST monads
ST
Tree
AVL
RedBlack
BTree
Queue
Bankers
FIFO
Collection
Graph -- start with GHC's DiGraph?
FiniteMap
Set
Memo -- (opt)
Unique
Database
MySQL
PostgreSQL
ODBC
Dotnet
... -- Mirrors the MS .NET class hierarchy
Debug
Trace
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?
Codec -- Coders/Decoders for various data formats
ASN.1
BER
TLV
Audio
Wav
MP3
...
Compression
Gzip
Bzip2
...
Encryption
DES
RSA
BlowFish
...
Image
GIF
PNG
JPEG
TIFF
...
Text
UTF8
UTF16
ISO8859
...
Video
Mpeg
QuickTime
Avi
...
Binary -- these are for encoding binary data into text
Base64
Yenc
DSP -- Digital Signal Processing libraries
Foreign
Ptr
StablePtr
ForeignPtr -- rename to FinalisedPtr? to void confusion with Foreign.Ptr
Storable
Marshal
Alloc
Array
Errors
Utils
C
Types
Errors
Strings
GHC
Exts -- hslibs/lang/GlaExts
...
Graphics
HGL
Rendering
Direct3D
FRAN
Metapost
Inventor
Haven
OpenGL
GL
GLU
Pan
UI
FranTk
Fudgets
GLUT
Gtk
Motif
ObjectIO
TkHaskell
X11
Xt
Xlib
Xmu
Xaw
Hugs
...
Language
Haskell -- hslibs/hssource
Syntax
Lexer
Parser
Pretty
HaskellCore
Python
C
...
Nhc
...
Numeric -- exports std. H98 numeric type classes
Statistics
Network -- (== hslibs/net/Socket), depends on FFI only
Socket -- or rename to Posix?
URI -- general URI parsing
CGI -- one in hslibs is ok?
Protocol
HTTP
FTP
SMTP
Prelude -- Haskell98 Prelude (mostly just re-exports
other parts of the tree).
System -- Interaction with the "system"
Cmd -- ( system )
CPUTime -- H98
Directory -- H98
Exit -- ( ExitCode(..), exitWith, exitFailure )
Environment -- ( getArgs, getProgName, getEnv ... )
Info -- info about the host system
IO -- H98 + IOExts - IOArray - IORef
Select
Unsafe -- unsafePerformIO, unsafeInterleaveIO
Console
GetOpt
Readline
Locale -- H98
Posix
Console
Directory
DynamicLinker
Prim
Module
IO
Process
Time
Mem -- rename from cryptic 'GC'
Weak -- (opt)
StableName -- (opt)
Time -- H98 + extensions
Win32 -- the full win32 operating system API
Test
HUnit
QuickCheck
Text
Encoding
QuotedPrintable
Rot13
Read
Lex -- cut down lexer for "read"
Show
Functions -- optional instance of Show for functions.
Regex -- previously RegexString
Posix -- Posix regular expression interface
PrettyPrint -- default (HughesPJ?)
HughesPJ
Wadler
Chitil
...
HTML -- HTML combinator lib
XML
Combinators
Parse
Pretty
Types
ParserCombinators -- no default
ReadP -- a more efficient "ReadS"
Parsec
Hutton_Meijer
...