# nhc98 libraries

In addition to the official Haskell'98 standard libraries (defined in the Haskell '98 Library Report, nhc98 is released with many extra useful libraries.

In order to accommodate a large number of libraries whilst avoiding name-clashes, nhc98 permits a small extension to the lexical syntax of module names. We allow a hierarchical namespace, with elements separated by dots, rather like in the Java language. The syntax of qualified identifiers is extended likewise. Each element of the module name begins with a capital letter, and the hierarchy is assumed to map onto a directory file structure. So for instance, the module named `Data.Structures.BTree` is expected to reside in the file Data/Structures/BTree.hs.

The full hierarchy included with nhc98 is listed below. Most of these modules have been plucked from the WWW - they are by various authors, and have various copyrights and licensing conditions. Please examine these licensing conditions in the source tree before you use a library.

Documentation for these libraries is generated automatically from the sources using HDoc, a tool written by Armin Groesslinger

You can develop your own personal tree of libraries for nhc98 as well. Just give the location of the root of your tree to hmake and/or nhc98 on the commandline, with the -Idir option.

library name | description
--- | ---
NHC.BinArray | imperative binary arrays
NHC.Binary | binary I/O and binary representations of values
NHC.Bit | bit-twiddling operations, e.g. and, or, xor
NHC.FFI | foreign function interface
NHC.GreenCard | just the standard `%dis` definitions and constructors you need in order to write your own GreenCard files
NHC.IOExtras | like GHC's IOExts
NonStdTrace | the common side-effecting `trace` function
NHC.PackedString | an efficient representation of strings
Text | obsolete

The latest updates to these pages are available on the WWW from `http://www.cs.york.ac.uk/fp/nhc98/`

2002.10.07
York Functional Programming Group