# nhc98 libraries

### Standard Libraries

nhc98 supports all the standard libraries from the official Haskell '98 Library Report. Here is a summary of the status of each.

library name | complete? | notes
--- | --- | ---
Array | yes | implementation based on vectors
CPUTime | yes | .
Char | yes | .
Complex | yes | .
Directory | yes | .
IO | no | missing: hReady, hWaitForInput, hLookAhead, hIsOpen, hIsClosed, hIsReadable, hIsWritable, hIsSeekable
Ix | yes | .
List | yes | additional fns: deleteFirsts, elemBy, elemIndexBy, lookupBy, notElemBy, permutations, subsequences, sums, products
Locale | yes | .
Maybe | yes | .
Monad | yes | additional fn: untilM
Numeric | yes | additional fn: showIntBase
Prelude | yes | .
Random | yes | identical to Hugs implementation
Ratio | yes | .
System | yes | .
Time | yes | .

### Extension libraries

Many of the standard hierarchical libraries are provided in nhc98. To use these, you must add the compile-time option -package pkg, where pkg is the name of the package. See here for ghc's documentation of many of these.

Packages supplied with nhc98-1.20 are: base, Cabal, directory, filepath, fps, haskell-src, HaXml, html, HUnit, old-locale, old-time, parsec, polyparse, pretty, process, QuickCheck, random, xhtml

The following non-standard libraries are provided only in nhc98, not in any other compiler. They are available without any special compiler options.

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 | contains IORefs, IOArrays, unsafePerformIO, etc.
NonStdTrace | the common side-effecting `trace` function
NHC.PackedString | a space-efficient representation of strings
NHC.Vector | primitives underlying IO (mutable) arrays

The latest updates to these pages are available on the WWW from `http://www.haskell.org/nhc98/`

This page last updated: 17th December 2003
York Functional Programming Group