# GHC Documentation

Welcome to GHC!

This is the top of the GHC documentation tree, where you will find links to all the supplied documentation about GHC and its libraries.

- The User's Guide

  The User's Guide has all you need to know about using GHC: command line options, language extensions, GHCi, etc.

- Hierarchical Libraries

  GHC comes with a large number of libraries, arranged hierarchically. The libraries are divided into packages - to use a package of libraries from GHC or GHCi just add the flag `-package <name>` to the command line, where `<name>` is the name of the package (see the section on packages in the User's Guide for more information). The `base` and `haskell98` packages are always available, so you don't need to use the `-package` flag to get these.

  - `base`: the Prelude, and a large collection of useful libraries.
  - `haskell98`: Haskell 98 Standard Libraries.
  - `network`: networking support libraries.
  - `haskell-src`: manipulating Haskell source code.

- (Old) Haskell Libraries

  Previous versions of GHC (before version 5.04) came with a suite of libraries known as `hslibs`, aka the Hugs-GHC libraries. As we are in the process of moving towards using hierarchical libraries for everything, many of these libraries have moved over to the new packages in the hierarchical libraries above. We still provide the old `hslibs` libraries for backwards compatibility and also for those libraries which have yet to move into the hierarchy. For libraries which have moved, the documentation contains a pointer to the location in the new libraries.

  Libraries which haven't moved yet, so are still only available from here, include: the POSIX library, the Win32 library, HaXml, Readline, and a few others.