This is a proposed standardised layout for Haskell libraries, using the newly-proposed idea of module namespaces. It is intended firstly to give a flavour of how namespaces can help in organising library modules. I hope it is a reasonably convincing demonstration that namespaces are a Good Thing.
Its second purpose is to prompt discussion of how we, the Haskell community, would like to organise and develop our libraries towards the goal of a "Standard" set, available on all compiler and interpreter platforms. The particular layout shown here is a discussion-starter, not a final state. (There are whole areas that I know very little about, such as Algebraic and Numeric libraries, so there are bound to be gaps.) But together, we must work to create a consensus on naming issues like these.
The most important guiding principle, in my view, is: Death to Misc and Utils! Do not use a catch-all name for a category; only a little extra thought is required to devise an informative name. Your users will thank you!
+ Algebra + DoCon
| + Geometric
| + ...
|
+ Data + Structures + Trees + AVL
| | | + RedBlack
| | | + BTree
| | |
| | + Queue + Bankers
| | | + FIFO
| | |
| | + Collection
| | + FiniteMap
| | + Graphs + ...
| | + Edison + ....
| |
| + Encoding + Binary
| + Bits
| + Bzip2
| + Gzip
| + MD5
|
+ Database + HaSQL
| + ODBC
|
+ Debug + Observe
| + QuickCheck
| + Trace
|
+ Graphics + UI + Gtk + Widget
| | | + Pane
| | | + Text
| | |
| | + FranTk + ...
| | + Fudgets + ...
| | + CleanIO + ...
| |
| + Drawing + HOpenGL + ....
| | + Vector
| |
| + Format + Jpeg
| + PPM
| + ...
|
+ Haskell + Language + CoreSyntax
| | + Parser
| | + TypeSystem + ...
| |
| + Plus + Concurrency
| + Exceptions
| + FFI
| + Unsafe + IO
| | + Coerce
| |
| + FunDeps
|
+ Interface + GetOpt
| + Readline
|
+ Network + Socket
| + Web + CGI
| + URL
|
+ Numeric + DSP + FFT
| | + FIR
| | + Noise
| | + Oscillator
| |
| + Gaussian + ...
|
+ Posix + ...
|
+ Text + Html + ...
| + LexerCombinators + Chakravarty
| | + UU
| |
| + ParserCombinators + HuttonMeijer
| | + Parsec
| | + UU
| |
| + PrettyPrinter + Chitil
| | + Hughes
| | + HughesPJ
| | + UU
| |
| + Xml + Combinators
| + Parse
| + PP
| + Types
|
+ Win32 + ...
|
+ Std + Algebra + ...
| + Data + ...
| + Database + ...
| + Debug + ...
| + Graphics + ...
| + Haskell + ...
| + Interface + ...
| + Network + ...
| + Numeric + ...
| + Text + ...
.
.
.
Apologies for the ASCII formatting of this tree. I haven't been able to find a convenient way to draw it properly yet. Suggestions are welcome.