The libraries are divided into several packages. The available packages are:
This package contains the Prelude and its support libraries, and a large
collection of useful libraries ranging from data structures to parsing
combinators and debugging utilities.
The Haskell Cabal is the Common Architecture for Building Applications
and Libraries. It is a framework which defines a common interface for
authors to more easily build their applications in a portable way. The
Haskell Cabal is meant to be a part of a larger infrastructure for
distributing, organizing, and cataloging Haskell Libraries and
Tools. For more information, please see:
Martin Erwig's Functional Graph Library.
The GLUT package contains a Haskell binding for the OpenGL Utility Toolkit, a
window system independent toolkit for writing OpenGL programs. For more
information about the C library on which this binding is based, please see:
This package provides compatibility with the modules of Haskell 98 and
the FFI addendum, by means of wrappers around modules from the base package
(which in many cases have additional features).
However Prelude, Numeric and Foreign are provided directly
by the base package.
The modules of this package are documented in the Revised Haskell 98 Report,
and the Haskell 98 Foreign Function Interface addendum,
Facilities for manipulating Haskell source code: an abstract syntax,
lexer, parser and pretty-printer.
A simple graphics library, designed to give the programmer access to
most interesting parts of the Win32 Graphics Device Interface and X11
library without exposing the programmer to the pain and anguish
usually associated with using these interfaces.
Note: the Win32 part is not currently operational.
The library also includes a module Graphics.SOE providing the interface
used in The Haskell School of Expression, by Paul Hudak,
HUnit is a unit testing framework for Haskell, inspired by the JUnit
tool for Java, see: http://www.junit.org.
A monad transformer library, inspired by the paper
Functional Programming with Overloading and Higher-Order Polymorphism,
Mark P Jones (http://www.cse.ogi.edu/~mpj/)
Advanced School of Functional Programming, 1995.
The OpenGL package contains a Haskell binding for the OpenGL graphics system
(GL, version 1.5) and its accompanying utility library (GLU, version 1.3).
OpenGL is the industry's most widely used and supported 2D and 3D graphics
application programming interface (API), incorporating a broad set of rendering,
texture mapping, special effects, and other powerful visualization functions.
For more information about OpenGL, please see: http://www.opengl.org/.
A monadic parser combinator library, written by Daan Leijen. Parsec is designed
from scratch as an industrial-strength parser library. It is simple, safe, well
documented, has extensive libraries and good error messages, and is also
fast. More documentation can be found on:
A library for testing Haskell programs automatically. The programmer provides a
specification of the program, in the form of properties which functions should
satisfy, and QuickCheck then tests that the properties hold in a large number of
randomly generated cases. Specifications are expressed in Haskell, using
combinators defined in the QuickCheck library. QuickCheck provides combinators
to define properties, observe the distribution of test data, and define test
data generators. For more information, please see:
An interface to the GNU readline library. More information on
readline can be found at http://www.gnu.org/directory/readline.html.
Software Transactional Memory: a modular composable concurrency abstraction.
Facilities for manipulating Haskell source code using Template Haskell.
A Haskell binding to the X11 library.
The binding is a direct translation of C binding;
for documentation of these calls, refer to The Xlib Programming Manual,
available online at http://tronche.com/gui/x/xlib/.
- Most of the time, all the packages are available without the need to
use any additional command-line options. The only time when this is not the
case is when linking a program on the command line, without using the --make
option: in this case you must list all the packages to link to by adding the
-package P flag (where P is the package name) to the command line for each
package. See the User's Guide (../users_guide/index.html) for more
- Hugs provides almost all of the modules in the the above packages (with
exceptions listed on the Hugs 98 libraries status page
(http://cvs.haskell.org/Hugs/pages/libstatus.html). All those modules are
always available, as a single hierarchy; Hugs does not use the package
- Nhc98 provides many of the modules in the the above packages (see the
Nhc98 libraries page (http://www.haskell.org/nhc98/libraries.html) for a more
details). The modules of the haskell98 package are available without the need
to use any additional compile-time options. To use modules from some other
package P with Nhc98, add the compile-time option -package P.