Legend:

All GHC installations contain a set of libraries called the ''boot libraries'', and this set is sufficient to compile GHC. The file `libraries/boot-packages` contains the list of libraries in this set.

4

4

5

At the root of the tree we have `ghc-prim`. As the name implies this package contains the most primitive types and functions. It only contains a handful of modules, including `GHC.Prim` (which contains `Int#`, `+#`, etc) and `GHC.Bool`, containing the `Bool` datatype.

5

* At the root of the tree we have '''`ghc-prim`'''. As the name implies this package contains the most primitive types and functions. It only contains a handful of modules, including `GHC.Prim` (which contains `Int#`, `+#`, etc) and `GHC.Bool`, containing the `Bool` datatype.

6

6

7

Above `ghc-prim` is the `integer` package, which provides a definition of the `Integer` type on top of the C `gmp` library. Which functionality is provided in `ghc-prim` is mostly driven by what functionality the `integer` package needs.

7

* Above `ghc-prim` is the '''`integer`''' package, which provides a definition of the `Integer` type on top of the C `gmp` library. Which functionality is provided in `ghc-prim` is mostly driven by what functionality the `integer` package needs.

8

8

9

Next is the `base` package. This contains a large number of modules, many of which are in one big cyclic import knot, mostly due to the `Exception` type. This is something that we hope to improve upon, so that base can be split up.

9

* Next is the '''`base`''' package. This contains a large number of modules, many of which are in one big cyclic import knot, mostly due to the `Exception` type. This is something that we hope to improve upon, so that base can be split up.

10

10

11

11

On top of base are a number of other, more specialised packages, whose purpose is generally clear from their name.