The standard Haskell Prelude as well as GHC's Prelude extensions are constructed from GHC's primitives in a couple of layers.
PrelBase.lhs
Some most elementary Prelude definitions are collected in PrelBase.lhs
.
In particular, it defines the boxed versions of Haskell primitive types
- for example, Int
is defined as
data Int = I# Int#
Saying that a boxed integer Int
is formed by applying the
data constructor I#
to an unboxed integer of type
Int#
. Unboxed types are hardcoded in the compiler and
exported together with the primitive
operations understood by GHC.
PrelBase.lhs
similarly defines basic types, such as,
boolean values
data Bool = False | True deriving (Eq, Ord)
the unit type
data () = ()
and lists
data [] a = [] | a : [a]
It also contains instance delarations for these types. In addition,
PrelBase.lhs
contains some tricky
machinery for efficient list handling.
Last modified: Wed Aug 8 19:30:18 EST 2001