# 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

Some of the standard hierarchical libraries are provided in nhc98. At the moment, they are drawn solely from the base package. To use these, you must add the compile-time option -package base. See here for full documentation.

supported | unsupported
--- | ---
Control.Arrow Control.Monad Control.Monad.Fix Control.Monad.Trans | Control.Concurrent Control.Concurrent.* Control.Exception Control.Exception.* Control.Monad.* Control.Parallel Control.Parallel.*
Data.Array Data.Bits Data.Bool Data.Char Data.Complex Data.Dynamic Data.Either Data.FiniteMap Data.IORef Data.Int Data.Ix Data.List Data.Maybe Data.PackedString Data.Ratio Data.Set Data.Tuple Data.Word | Data.Array.* Data.Generics Data.STRef Data.STRef.* Data.Unique
Debug.Trace | Debug.QuickCheck Debug.QuickCheck.*
Foreign.C Foreign.C.Error Foreign.C.String Foreign.C.Types Foreign.C.TypesISO Foreign.ForeignPtr Foreign.Marshal.Alloc Foreign.Marshal.Array Foreign.Marshal.Error Foreign.Marshal.Utils Foreign.Marshal.Pool Foreign.Marshal Foreign.Ptr Foreign.StablePtr Foreign.Storable Foreign |
System.Console.GetOpt System.Cmd System.Directory System.Environment System.Exit System.IO System.IO.Error System.IO.Unsafe System.Info System.Locale System.Random | System.CPUTime System.Mem System.Mem.StableName System.Mem.Weak System.Posix.Signals System.Posix.Types System.Time

Text.Html
Text.Html.BlockTable
Text.ParserCombinators.Parsec
Text.ParserCombinators.Parsec.Error
Text.ParserCombinators.Parsec.Char
Text.ParserCombinators.Parsec.Combinator
Text.ParserCombinators.Parsec.Expr
Text.ParserCombinators.Parsec.Perm
Text.ParserCombinators.Parsec.Pos
Text.ParserCombinators.Parsec.Prim
Text.PrettyPrint
Text.PrettyPrint.HughesPJ
Text.Read
Text.Show
Text.Show.Functions

Text.ParserCombinators.Parsec.Language
Text.ParserCombinators.Parsec.Token
Text.ParserCombinators.ReadP
Text.ParserCombinators.ReadPrec
Text.Read.Lex
Text.Regex
Text.Regex.*

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

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