[project @ 2002-02-13 15:57:19 by simonmar]
[ghc-hetmet.git] / ghc / compiler / prelude / PrelNames.lhs
index cf0d3bf..daa0495 100644 (file)
@@ -22,8 +22,6 @@ module PrelNames (
        knownKeyNames, 
         mkTupNameStr, mkTupConRdrName,
 
-       SyntaxMap, vanillaSyntaxMap, SyntaxList, syntaxList, 
-
        ------------------------------------------------------------
        -- Goups of classes and types
        needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
@@ -46,7 +44,8 @@ import RdrName          ( RdrName, mkOrig, mkUnqual )
 import UniqFM
 import Unique    ( Unique, Uniquable(..), hasKey,
                    mkPreludeMiscIdUnique, mkPreludeDataConUnique,
-                   mkPreludeTyConUnique, mkPreludeClassUnique
+                   mkPreludeTyConUnique, mkPreludeClassUnique,
+                   mkTupleTyConUnique
                  ) 
 import BasicTypes ( Boxity(..), Arity )
 import UniqFM    ( UniqFM, listToUFM )
@@ -96,8 +95,8 @@ knownKeyNames :: [Name]
 knownKeyNames
  =  [
        -- Type constructors (synonyms especially)
-       ioTyConName,
-       mainName,
+       ioTyConName, ioDataConName,
+       runMainName,
        orderingTyConName,
        rationalTyConName,
        ratioDataConName,
@@ -119,7 +118,6 @@ knownKeyNames
        numClassName,                   -- mentioned, numeric
        enumClassName,                  -- derivable
        monadClassName,
-       monadPlusClassName,
        functorClassName,
        showClassName,                  -- derivable
        realClassName,                  -- numeric
@@ -149,7 +147,11 @@ knownKeyNames
        returnMName,
        failMName,
        fromRationalName,
-    
+
+        -- not class methods, but overloaded (for parallel arrays)
+       enumFromToPName,
+       enumFromThenToPName,
+
        deRefStablePtrName,
        newStablePtrName,
        bindIOName,
@@ -172,6 +174,20 @@ knownKeyNames
        buildName,
        augmentName,
 
+        -- Parallel array operations
+       nullPName,
+       lengthPName,
+       replicatePName,
+       mapPName,
+       filterPName,
+       zipPName,
+       crossPName,
+       indexPName,
+       toPName,
+       bpermutePName,
+       bpermuteDftPName,
+       indexOfPName,
+
        -- FFI primitive types that are not wired-in.
        int8TyConName,
        int16TyConName,
@@ -190,7 +206,20 @@ knownKeyNames
        eqStringName,
        assertName,
        runSTRepName,
-       printName
+       printName,
+       splitName, fstName, sndName,    -- Used by splittery
+
+       -- Others (needed for flattening and not mentioned before)
+       andName,
+       orName,
+       eqCharName, 
+       eqIntName,
+       eqFloatName, 
+       eqDoubleName, 
+       neqCharName, 
+       neqIntName,
+       neqFloatName, 
+       neqDoubleName
     ]
 \end{code}
 
@@ -203,37 +232,41 @@ knownKeyNames
 
 \begin{code}
 pRELUDE_Name      = mkModuleName "Prelude"
-pREL_GHC_Name     = mkModuleName "PrelGHC"        -- Primitive types and values
-pREL_BASE_Name    = mkModuleName "PrelBase"
-pREL_ENUM_Name    = mkModuleName "PrelEnum"
-pREL_SHOW_Name    = mkModuleName "PrelShow"
-pREL_READ_Name    = mkModuleName "PrelRead"
-pREL_NUM_Name     = mkModuleName "PrelNum"
-pREL_LIST_Name    = mkModuleName "PrelList"
-pREL_TUP_Name     = mkModuleName "PrelTup"
-pREL_PACK_Name    = mkModuleName "PrelPack"
-pREL_CONC_Name    = mkModuleName "PrelConc"
-pREL_IO_BASE_Name = mkModuleName "PrelIOBase"
-pREL_IO_Name     = mkModuleName "PrelIO"
-pREL_ST_Name     = mkModuleName "PrelST"
-pREL_ARR_Name     = mkModuleName "PrelArr"
+pREL_GHC_Name     = mkModuleName "GHC.Prim"       -- Primitive types and values
+pREL_BASE_Name    = mkModuleName "GHC.Base"
+pREL_ENUM_Name    = mkModuleName "GHC.Enum"
+pREL_SHOW_Name    = mkModuleName "GHC.Show"
+pREL_READ_Name    = mkModuleName "GHC.Read"
+pREL_NUM_Name     = mkModuleName "GHC.Num"
+pREL_LIST_Name    = mkModuleName "GHC.List"
+pREL_PARR_Name    = mkModuleName "GHC.PArr"
+pREL_TUP_Name     = mkModuleName "Data.Tuple"
+pREL_PACK_Name    = mkModuleName "GHC.Pack"
+pREL_CONC_Name    = mkModuleName "GHC.Conc"
+pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
+pREL_ST_Name     = mkModuleName "GHC.ST"
+pREL_ARR_Name     = mkModuleName "GHC.Arr"
 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
-pREL_FOREIGN_Name = mkModuleName "PrelForeign"
-pREL_STABLE_Name  = mkModuleName "PrelStable"
-pREL_ADDR_Name    = mkModuleName "PrelAddr"
-pREL_PTR_Name     = mkModuleName "PrelPtr"
-pREL_ERR_Name     = mkModuleName "PrelErr"
-pREL_REAL_Name    = mkModuleName "PrelReal"
-pREL_FLOAT_Name   = mkModuleName "PrelFloat"
-
-pREL_MAIN_Name    = mkModuleName "PrelMain"
+fOREIGN_PTR_Name  = mkModuleName "Foreign.ForeignPtr"
+pREL_STABLE_Name  = mkModuleName "GHC.Stable"
+pREL_SPLIT_Name   = mkModuleName "GHC.Split"
+pREL_ADDR_Name    = mkModuleName "GHC.Addr"
+pREL_PTR_Name     = mkModuleName "GHC.Ptr"
+pREL_ERR_Name     = mkModuleName "GHC.Err"
+pREL_REAL_Name    = mkModuleName "GHC.Real"
+pREL_FLOAT_Name   = mkModuleName "GHC.Float"
+pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
+sYSTEM_IO_Name   = mkModuleName "System.IO"
+
 mAIN_Name        = mkModuleName "Main"
-pREL_INT_Name    = mkModuleName "PrelInt"
-pREL_WORD_Name   = mkModuleName "PrelWord"
+pREL_INT_Name    = mkModuleName "GHC.Int"
+pREL_WORD_Name   = mkModuleName "GHC.Word"
 
 fOREIGNOBJ_Name          = mkModuleName "ForeignObj"
 aDDR_Name        = mkModuleName "Addr"
 
+gLA_EXTS_Name   = mkModuleName "GlaExts"
+
 pREL_GHC       = mkPrelModule pREL_GHC_Name
 pREL_BASE      = mkPrelModule pREL_BASE_Name
 pREL_ADDR      = mkPrelModule pREL_ADDR_Name
@@ -245,6 +278,7 @@ pREL_ERR            = mkPrelModule pREL_ERR_Name
 pREL_NUM       = mkPrelModule pREL_NUM_Name
 pREL_REAL      = mkPrelModule pREL_REAL_Name
 pREL_FLOAT     = mkPrelModule pREL_FLOAT_Name
+pRELUDE                = mkPrelModule pRELUDE_Name
 
 iNTERACTIVE     = mkHomeModule (mkModuleName "$Interactive")
 \end{code}
@@ -304,7 +338,8 @@ compiler (notably the deriving mechanism) need to mention their names,
 and it's convenient to write them all down in one place.
 
 \begin{code}
-mainName = varQual mAIN_Name SLIT("main") mainKey
+dollarMainName = varQual mAIN_Name SLIT("$main") dollarMainKey
+runMainName    = varQual pREL_TOP_HANDLER_Name SLIT("runMain") runMainKey
 
 -- Stuff from PrelGHC
 usOnceTyConName  = kindQual SLIT(".") usOnceTyConKey
@@ -320,8 +355,10 @@ typeConName         = kindQual SLIT("Type") typeConKey
 funTyConName                 = tcQual  pREL_GHC_Name SLIT("(->)")  funTyConKey
 charPrimTyConName            = tcQual  pREL_GHC_Name SLIT("Char#") charPrimTyConKey 
 intPrimTyConName             = tcQual  pREL_GHC_Name SLIT("Int#") intPrimTyConKey 
+int32PrimTyConName           = tcQual  pREL_GHC_Name SLIT("Int32#") int32PrimTyConKey 
 int64PrimTyConName           = tcQual  pREL_GHC_Name SLIT("Int64#") int64PrimTyConKey 
 wordPrimTyConName            = tcQual  pREL_GHC_Name SLIT("Word#") wordPrimTyConKey 
+word32PrimTyConName          = tcQual  pREL_GHC_Name SLIT("Word32#") word32PrimTyConKey 
 word64PrimTyConName          = tcQual  pREL_GHC_Name SLIT("Word64#") word64PrimTyConKey 
 addrPrimTyConName            = tcQual  pREL_GHC_Name SLIT("Addr#") addrPrimTyConKey 
 floatPrimTyConName           = tcQual  pREL_GHC_Name SLIT("Float#") floatPrimTyConKey 
@@ -356,6 +393,10 @@ listTyConName        = tcQual   pREL_BASE_Name SLIT("[]") listTyConKey
 nilDataConName           = dataQual pREL_BASE_Name SLIT("[]") nilDataConKey
 consDataConName          = dataQual pREL_BASE_Name SLIT(":") consDataConKey
 
+-- PrelTup
+fstName                  = varQual pREL_TUP_Name SLIT("fst") fstIdKey
+sndName                  = varQual pREL_TUP_Name SLIT("snd") sndIdKey
+
 -- Generics
 crossTyConName     = tcQual   pREL_BASE_Name SLIT(":*:") crossTyConKey
 crossDataConName   = dataQual pREL_BASE_Name SLIT(":*:") crossDataConKey
@@ -366,14 +407,25 @@ genUnitTyConName   = tcQual   pREL_BASE_Name SLIT("Unit") genUnitTyConKey
 genUnitDataConName = dataQual pREL_BASE_Name SLIT("Unit") genUnitDataConKey
 
 -- Random PrelBase functions
-unsafeCoerceName  = varQual pREL_BASE_Name SLIT("unsafeCoerce") unsafeCoerceIdKey
+unsafeCoerceName  = varQual pREL_BASE_Name SLIT("unsafeCoerce") 
+                                                            unsafeCoerceIdKey
 otherwiseIdName   = varQual pREL_BASE_Name SLIT("otherwise") otherwiseIdKey
-appendName       = varQual pREL_BASE_Name SLIT("++") appendIdKey
-foldrName        = varQual pREL_BASE_Name SLIT("foldr") foldrIdKey
-mapName                  = varQual pREL_BASE_Name SLIT("map") mapIdKey
-buildName        = varQual pREL_BASE_Name SLIT("build") buildIdKey
-augmentName      = varQual pREL_BASE_Name SLIT("augment") augmentIdKey
-eqStringName     = varQual pREL_BASE_Name SLIT("eqString") eqStringIdKey
+appendName       = varQual pREL_BASE_Name SLIT("++")        appendIdKey
+foldrName        = varQual pREL_BASE_Name SLIT("foldr")     foldrIdKey
+mapName                  = varQual pREL_BASE_Name SLIT("map")       mapIdKey
+buildName        = varQual pREL_BASE_Name SLIT("build")     buildIdKey
+augmentName      = varQual pREL_BASE_Name SLIT("augment")   augmentIdKey
+eqStringName     = varQual pREL_BASE_Name SLIT("eqString")  eqStringIdKey
+andName                  = varQual pREL_BASE_Name SLIT("&&")        andIdKey
+orName           = varQual pREL_BASE_Name SLIT("||")        orIdKey
+eqCharName       = varQual pREL_GHC_Name  SLIT("eqChar#")   eqCharIdKey
+eqIntName        = varQual pREL_GHC_Name  SLIT("==#")       eqIntIdKey
+eqFloatName      = varQual pREL_GHC_Name  SLIT("eqFloat#")  eqFloatIdKey
+eqDoubleName     = varQual pREL_GHC_Name  SLIT("==##")      eqDoubleIdKey
+neqCharName      = varQual pREL_GHC_Name  SLIT("neqChar#")  neqCharIdKey
+neqIntName       = varQual pREL_GHC_Name  SLIT("/=#")       neqIntIdKey
+neqFloatName     = varQual pREL_GHC_Name  SLIT("neqFloat#") neqFloatIdKey
+neqDoubleName    = varQual pREL_GHC_Name  SLIT("/=##")      neqDoubleIdKey
 
 -- Strings
 unpackCStringName       = varQual pREL_BASE_Name SLIT("unpackCString#") unpackCStringIdKey
@@ -389,7 +441,6 @@ geName                = varQual  pREL_BASE_Name SLIT(">=") geClassOpKey
 
 -- Class Monad
 monadClassName    = clsQual pREL_BASE_Name SLIT("Monad") monadClassKey
-monadPlusClassName = clsQual pREL_BASE_Name SLIT("MonadPlus") monadPlusClassKey
 thenMName         = varQual pREL_BASE_Name SLIT(">>=") thenMClassOpKey
 returnMName       = varQual pREL_BASE_Name SLIT("return") returnMClassOpKey
 failMName         = varQual pREL_BASE_Name SLIT("fail") failMClassOpKey
@@ -444,6 +495,10 @@ enumFromToName        = varQual pREL_ENUM_Name SLIT("enumFromTo") enumFromToClassOpK
 enumFromThenName   = varQual pREL_ENUM_Name SLIT("enumFromThen") enumFromThenClassOpKey
 enumFromThenToName = varQual pREL_ENUM_Name SLIT("enumFromThenTo") enumFromThenToClassOpKey
 
+-- Overloaded via Class Enum
+enumFromToPName           = varQual pREL_PARR_Name SLIT("enumFromToP") enumFromToPIdKey
+enumFromThenToPName= varQual pREL_PARR_Name SLIT("enumFromThenToP") enumFromThenToPIdKey
+
 -- Class Bounded
 boundedClassName  = clsQual pREL_ENUM_Name SLIT("Bounded") boundedClassKey
 
@@ -452,6 +507,23 @@ concatName   = varQual pREL_LIST_Name SLIT("concat") concatIdKey
 filterName       = varQual pREL_LIST_Name SLIT("filter") filterIdKey
 zipName                  = varQual pREL_LIST_Name SLIT("zip") zipIdKey
 
+-- parallel array types and functions
+parrTyConName    = tcQual  pREL_PARR_Name SLIT("[::]")       parrTyConKey
+parrDataConName   = dataQual pREL_PARR_Name SLIT("PArr")      parrDataConKey
+nullPName        = varQual pREL_PARR_Name SLIT("nullP")      nullPIdKey
+lengthPName      = varQual pREL_PARR_Name SLIT("lengthP")    lengthPIdKey
+replicatePName   = varQual pREL_PARR_Name SLIT("replicateP") replicatePIdKey
+mapPName         = varQual pREL_PARR_Name SLIT("mapP")       mapPIdKey
+filterPName      = varQual pREL_PARR_Name SLIT("filterP")    filterPIdKey
+zipPName         = varQual pREL_PARR_Name SLIT("zipP")       zipPIdKey
+crossPName       = varQual pREL_PARR_Name SLIT("crossP")     crossPIdKey
+indexPName       = varQual pREL_PARR_Name SLIT("!:")         indexPIdKey
+toPName                  = varQual pREL_PARR_Name SLIT("toP")        toPIdKey
+bpermutePName     = varQual pREL_PARR_Name SLIT("bpermuteP")  bpermutePIdKey
+bpermuteDftPName  = varQual pREL_PARR_Name SLIT("bpermuteDftP") 
+                                                             bpermuteDftPIdKey
+indexOfPName      = varQual pREL_PARR_Name SLIT("indexOfP")   indexOfPIdKey
+
 -- IOBase things
 ioTyConName      = tcQual   pREL_IO_BASE_Name SLIT("IO") ioTyConKey
 ioDataConName     = dataQual pREL_IO_BASE_Name SLIT("IO") ioDataConKey
@@ -460,7 +532,7 @@ returnIOName          = varQual  pREL_IO_BASE_Name SLIT("returnIO") returnIOIdKey
 failIOName       = varQual  pREL_IO_BASE_Name SLIT("failIO") failIOIdKey
 
 -- IO things
-printName        = varQual pREL_IO_Name SLIT("print") printIdKey
+printName        = varQual sYSTEM_IO_Name SLIT("print") printIdKey
 
 -- Int, Word, and Addr things
 int8TyConName     = tcQual pREL_INT_Name  SLIT("Int8") int8TyConKey
@@ -489,11 +561,11 @@ funPtrDataConName = dataQual pREL_PTR_Name SLIT("FunPtr") funPtrDataConKey
 byteArrayTyConName       = tcQual pREL_BYTEARR_Name  SLIT("ByteArray") byteArrayTyConKey
 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name  SLIT("MutableByteArray") mutableByteArrayTyConKey
 
--- Forign objects and weak pointers
+-- Foreign objects and weak pointers
 foreignObjTyConName   = tcQual   fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjTyConKey
 foreignObjDataConName = dataQual fOREIGNOBJ_Name SLIT("ForeignObj") foreignObjDataConKey
-foreignPtrTyConName   = tcQual   pREL_IO_BASE_Name SLIT("ForeignPtr") foreignPtrTyConKey
-foreignPtrDataConName = dataQual pREL_IO_BASE_Name SLIT("ForeignPtr") foreignPtrDataConKey
+foreignPtrTyConName   = tcQual   fOREIGN_PTR_Name SLIT("ForeignPtr") foreignPtrTyConKey
+foreignPtrDataConName = dataQual fOREIGN_PTR_Name SLIT("ForeignPtr") foreignPtrDataConKey
 stablePtrTyConName    = tcQual   pREL_STABLE_Name SLIT("StablePtr") stablePtrTyConKey
 stablePtrDataConName  = dataQual pREL_STABLE_Name SLIT("StablePtr") stablePtrDataConKey
 deRefStablePtrName    = varQual  pREL_STABLE_Name SLIT("deRefStablePtr") deRefStablePtrIdKey
@@ -503,6 +575,9 @@ errorName      = varQual pREL_ERR_Name SLIT("error") errorIdKey
 assertName         = varQual pREL_GHC_Name SLIT("assert") assertIdKey
 getTagName        = varQual pREL_GHC_Name SLIT("getTag#") getTagIdKey
 runSTRepName      = varQual pREL_ST_Name  SLIT("runSTRep") runSTRepIdKey
+
+-- The "split" Id for splittable implicit parameters
+splitName          = varQual pREL_SPLIT_Name SLIT("split") splitIdKey
 \end{code}
 
 %************************************************************************
@@ -574,6 +649,7 @@ populate the occurrence list above.
 funTyCon_RDR           = nameRdrName funTyConName
 nilCon_RDR             = nameRdrName nilDataConName
 listTyCon_RDR          = nameRdrName listTyConName
+parrTyCon_RDR          = nameRdrName parrTyConName
 ioTyCon_RDR            = nameRdrName ioTyConName
 intTyCon_RDR           = nameRdrName intTyConName
 eq_RDR                         = nameRdrName eqName
@@ -659,7 +735,6 @@ floatingClassKey    = mkPreludeClassUnique 5
 fractionalClassKey     = mkPreludeClassUnique 6 
 integralClassKey       = mkPreludeClassUnique 7 
 monadClassKey          = mkPreludeClassUnique 8 
-monadPlusClassKey      = mkPreludeClassUnique 9
 functorClassKey                = mkPreludeClassUnique 10
 numClassKey            = mkPreludeClassUnique 11
 ordClassKey            = mkPreludeClassUnique 12
@@ -668,7 +743,7 @@ realClassKey                = mkPreludeClassUnique 14
 realFloatClassKey      = mkPreludeClassUnique 15
 realFracClassKey       = mkPreludeClassUnique 16
 showClassKey           = mkPreludeClassUnique 17
-                                              
+
 cCallableClassKey      = mkPreludeClassUnique 18
 cReturnableClassKey    = mkPreludeClassUnique 19
 
@@ -698,58 +773,65 @@ intPrimTyConKey                           = mkPreludeTyConUnique 14
 intTyConKey                            = mkPreludeTyConUnique 15
 int8TyConKey                           = mkPreludeTyConUnique 16
 int16TyConKey                          = mkPreludeTyConUnique 17
-int32TyConKey                          = mkPreludeTyConUnique 18
-int64PrimTyConKey                      = mkPreludeTyConUnique 19
-int64TyConKey                          = mkPreludeTyConUnique 20
-integerTyConKey                                = mkPreludeTyConUnique 21
-listTyConKey                           = mkPreludeTyConUnique 22
-foreignObjPrimTyConKey                 = mkPreludeTyConUnique 23
-foreignObjTyConKey                     = mkPreludeTyConUnique 24
-foreignPtrTyConKey                     = mkPreludeTyConUnique 25
-weakPrimTyConKey                       = mkPreludeTyConUnique 26
-mutableArrayPrimTyConKey               = mkPreludeTyConUnique 27
-mutableByteArrayPrimTyConKey           = mkPreludeTyConUnique 28
-orderingTyConKey                       = mkPreludeTyConUnique 29
-mVarPrimTyConKey                       = mkPreludeTyConUnique 30
-ratioTyConKey                          = mkPreludeTyConUnique 31
-rationalTyConKey                       = mkPreludeTyConUnique 32
-realWorldTyConKey                      = mkPreludeTyConUnique 33
-stablePtrPrimTyConKey                  = mkPreludeTyConUnique 34
-stablePtrTyConKey                      = mkPreludeTyConUnique 35
-statePrimTyConKey                      = mkPreludeTyConUnique 36
-stableNamePrimTyConKey                 = mkPreludeTyConUnique 50
-stableNameTyConKey                     = mkPreludeTyConUnique 51
-mutableByteArrayTyConKey               = mkPreludeTyConUnique 52
-mutVarPrimTyConKey                     = mkPreludeTyConUnique 53
-ioTyConKey                             = mkPreludeTyConUnique 55
-byteArrayTyConKey                      = mkPreludeTyConUnique 56
-wordPrimTyConKey                       = mkPreludeTyConUnique 57
-wordTyConKey                           = mkPreludeTyConUnique 58
-word8TyConKey                          = mkPreludeTyConUnique 59
-word16TyConKey                         = mkPreludeTyConUnique 60
-word32TyConKey                         = mkPreludeTyConUnique 61
-word64PrimTyConKey                     = mkPreludeTyConUnique 62
-word64TyConKey                         = mkPreludeTyConUnique 63
-liftedConKey                           = mkPreludeTyConUnique 64
-unliftedConKey                         = mkPreludeTyConUnique 65
-anyBoxConKey                           = mkPreludeTyConUnique 66
-kindConKey                             = mkPreludeTyConUnique 67
-boxityConKey                           = mkPreludeTyConUnique 68
-typeConKey                             = mkPreludeTyConUnique 69
-threadIdPrimTyConKey                   = mkPreludeTyConUnique 70
-bcoPrimTyConKey                                = mkPreludeTyConUnique 71
-ptrTyConKey                            = mkPreludeTyConUnique 72
-funPtrTyConKey                         = mkPreludeTyConUnique 73
+int32PrimTyConKey                      = mkPreludeTyConUnique 18
+int32TyConKey                          = mkPreludeTyConUnique 19
+int64PrimTyConKey                      = mkPreludeTyConUnique 20
+int64TyConKey                          = mkPreludeTyConUnique 21
+integerTyConKey                                = mkPreludeTyConUnique 22
+listTyConKey                           = mkPreludeTyConUnique 23
+foreignObjPrimTyConKey                 = mkPreludeTyConUnique 24
+foreignObjTyConKey                     = mkPreludeTyConUnique 25
+foreignPtrTyConKey                     = mkPreludeTyConUnique 26
+weakPrimTyConKey                       = mkPreludeTyConUnique 27
+mutableArrayPrimTyConKey               = mkPreludeTyConUnique 28
+mutableByteArrayPrimTyConKey           = mkPreludeTyConUnique 29
+orderingTyConKey                       = mkPreludeTyConUnique 30
+mVarPrimTyConKey                       = mkPreludeTyConUnique 31
+ratioTyConKey                          = mkPreludeTyConUnique 32
+rationalTyConKey                       = mkPreludeTyConUnique 33
+realWorldTyConKey                      = mkPreludeTyConUnique 34
+stablePtrPrimTyConKey                  = mkPreludeTyConUnique 35
+stablePtrTyConKey                      = mkPreludeTyConUnique 36
+statePrimTyConKey                      = mkPreludeTyConUnique 50
+stableNamePrimTyConKey                 = mkPreludeTyConUnique 51
+stableNameTyConKey                     = mkPreludeTyConUnique 52
+mutableByteArrayTyConKey               = mkPreludeTyConUnique 53
+mutVarPrimTyConKey                     = mkPreludeTyConUnique 55
+ioTyConKey                             = mkPreludeTyConUnique 56
+byteArrayTyConKey                      = mkPreludeTyConUnique 57
+wordPrimTyConKey                       = mkPreludeTyConUnique 58
+wordTyConKey                           = mkPreludeTyConUnique 59
+word8TyConKey                          = mkPreludeTyConUnique 60
+word16TyConKey                         = mkPreludeTyConUnique 61 
+word32PrimTyConKey                     = mkPreludeTyConUnique 62 
+word32TyConKey                         = mkPreludeTyConUnique 63
+word64PrimTyConKey                     = mkPreludeTyConUnique 64
+word64TyConKey                         = mkPreludeTyConUnique 65
+liftedConKey                           = mkPreludeTyConUnique 66
+unliftedConKey                         = mkPreludeTyConUnique 67
+anyBoxConKey                           = mkPreludeTyConUnique 68
+kindConKey                             = mkPreludeTyConUnique 69
+boxityConKey                           = mkPreludeTyConUnique 70
+typeConKey                             = mkPreludeTyConUnique 71
+threadIdPrimTyConKey                   = mkPreludeTyConUnique 72
+bcoPrimTyConKey                                = mkPreludeTyConUnique 73
+ptrTyConKey                            = mkPreludeTyConUnique 74
+funPtrTyConKey                         = mkPreludeTyConUnique 75
 
 -- Usage type constructors
-usageConKey                            = mkPreludeTyConUnique 74
-usOnceTyConKey                         = mkPreludeTyConUnique 75
-usManyTyConKey                         = mkPreludeTyConUnique 76
+usageConKey                            = mkPreludeTyConUnique 76
+usOnceTyConKey                         = mkPreludeTyConUnique 77
+usManyTyConKey                         = mkPreludeTyConUnique 78
 
 -- Generic Type Constructors
-crossTyConKey                          = mkPreludeTyConUnique 77
-plusTyConKey                           = mkPreludeTyConUnique 78
-genUnitTyConKey                                = mkPreludeTyConUnique 79
+crossTyConKey                          = mkPreludeTyConUnique 79
+plusTyConKey                           = mkPreludeTyConUnique 80
+genUnitTyConKey                                = mkPreludeTyConUnique 81
+
+-- Parallel array type constructor
+parrTyConKey                           = mkPreludeTyConUnique 82
+
+unitTyConKey = mkTupleTyConUnique Boxed 0
 \end{code}
 
 %************************************************************************
@@ -785,6 +867,9 @@ crossDataConKey                             = mkPreludeDataConUnique 20
 inlDataConKey                          = mkPreludeDataConUnique 21
 inrDataConKey                          = mkPreludeDataConUnique 22
 genUnitDataConKey                      = mkPreludeDataConUnique 23
+
+-- Data constructor for parallel arrays
+parrDataConKey                         = mkPreludeDataConUnique 24
 \end{code}
 
 %************************************************************************
@@ -807,10 +892,12 @@ integerPlusOneIdKey             = mkPreludeMiscIdUnique 10
 integerPlusTwoIdKey          = mkPreludeMiscIdUnique 11
 integerZeroIdKey             = mkPreludeMiscIdUnique 12
 int2IntegerIdKey             = mkPreludeMiscIdUnique 13
+seqIdKey                     = mkPreludeMiscIdUnique 14
 irrefutPatErrorIdKey         = mkPreludeMiscIdUnique 15
 eqStringIdKey                = mkPreludeMiscIdUnique 16
 noMethodBindingErrorIdKey     = mkPreludeMiscIdUnique 17
 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18
+errorCStringIdKey            = mkPreludeMiscIdUnique 19 
 parErrorIdKey                = mkPreludeMiscIdUnique 20
 parIdKey                     = mkPreludeMiscIdUnique 21
 patErrorIdKey                = mkPreludeMiscIdUnique 22
@@ -836,6 +923,47 @@ plusIntegerIdKey         = mkPreludeMiscIdUnique 41
 timesIntegerIdKey            = mkPreludeMiscIdUnique 42
 printIdKey                   = mkPreludeMiscIdUnique 43
 failIOIdKey                  = mkPreludeMiscIdUnique 44
+nullAddrIdKey                = mkPreludeMiscIdUnique 46
+voidArgIdKey                 = mkPreludeMiscIdUnique 47
+splitIdKey                   = mkPreludeMiscIdUnique 48
+fstIdKey                     = mkPreludeMiscIdUnique 49
+sndIdKey                     = mkPreludeMiscIdUnique 50
+otherwiseIdKey               = mkPreludeMiscIdUnique 51
+mapIdKey                     = mkPreludeMiscIdUnique 52
+assertIdKey                  = mkPreludeMiscIdUnique 53
+runSTRepIdKey                = mkPreludeMiscIdUnique 54
+
+dollarMainKey                = mkPreludeMiscIdUnique 55
+runMainKey                   = mkPreludeMiscIdUnique 56
+
+andIdKey                     = mkPreludeMiscIdUnique 57
+orIdKey                              = mkPreludeMiscIdUnique 58
+eqCharIdKey                  = mkPreludeMiscIdUnique 59
+eqIntIdKey                   = mkPreludeMiscIdUnique 60
+eqFloatIdKey                 = mkPreludeMiscIdUnique 61
+eqDoubleIdKey                = mkPreludeMiscIdUnique 62
+neqCharIdKey                 = mkPreludeMiscIdUnique 63
+neqIntIdKey                  = mkPreludeMiscIdUnique 64
+neqFloatIdKey                = mkPreludeMiscIdUnique 65
+neqDoubleIdKey               = mkPreludeMiscIdUnique 66
+
+-- NB: Currently a gap of four slots
+
+-- Parallel array functions
+nullPIdKey                   = mkPreludeMiscIdUnique 70
+lengthPIdKey                 = mkPreludeMiscIdUnique 71
+replicatePIdKey                      = mkPreludeMiscIdUnique 72
+mapPIdKey                    = mkPreludeMiscIdUnique 73
+filterPIdKey                 = mkPreludeMiscIdUnique 74
+zipPIdKey                    = mkPreludeMiscIdUnique 75
+crossPIdKey                  = mkPreludeMiscIdUnique 76
+indexPIdKey                  = mkPreludeMiscIdUnique 77
+toPIdKey                     = mkPreludeMiscIdUnique 78
+enumFromToPIdKey              = mkPreludeMiscIdUnique 79
+enumFromThenToPIdKey          = mkPreludeMiscIdUnique 80
+bpermutePIdKey               = mkPreludeMiscIdUnique 81
+bpermuteDftPIdKey            = mkPreludeMiscIdUnique 82
+indexOfPIdKey                = mkPreludeMiscIdUnique 83
 \end{code}
 
 Certain class operations from Prelude classes.  They get their own
@@ -843,6 +971,8 @@ uniques so we can look them up easily when we want to conjure them up
 during type checking.
 
 \begin{code}
+       -- Just a place holder for  unbound variables  produced by the renamer:
+unboundKey                   = mkPreludeMiscIdUnique 101 
 fromIntegerClassOpKey        = mkPreludeMiscIdUnique 102
 minusClassOpKey                      = mkPreludeMiscIdUnique 103
 fromRationalClassOpKey       = mkPreludeMiscIdUnique 104
@@ -855,20 +985,9 @@ geClassOpKey                     = mkPreludeMiscIdUnique 110
 negateClassOpKey             = mkPreludeMiscIdUnique 111
 failMClassOpKey                      = mkPreludeMiscIdUnique 112
 thenMClassOpKey                      = mkPreludeMiscIdUnique 113 -- (>>=)
-       -- Just a place holder for  unbound variables  produced by the renamer:
-unboundKey                   = mkPreludeMiscIdUnique 114 
 fromEnumClassOpKey           = mkPreludeMiscIdUnique 115
-                             
-mainKey                              = mkPreludeMiscIdUnique 116
 returnMClassOpKey            = mkPreludeMiscIdUnique 117
-otherwiseIdKey               = mkPreludeMiscIdUnique 118
 toEnumClassOpKey             = mkPreludeMiscIdUnique 119
-mapIdKey                     = mkPreludeMiscIdUnique 120
-\end{code}
-
-\begin{code}
-assertIdKey                  = mkPreludeMiscIdUnique 121
-runSTRepIdKey                = mkPreludeMiscIdUnique 122
 \end{code}
 
 
@@ -912,48 +1031,6 @@ cCallishTyKeys =
 
 %************************************************************************
 %*                                                                     *
-\subsection{Re-bindable desugaring names}
-%*                                                                     *
-%************************************************************************
-
-Haskell 98 says that when you say "3" you get the "fromInteger" from the
-Standard Prelude, regardless of what is in scope.   However, to experiment
-with having a language that is less coupled to the standard prelude, we're
-trying a non-standard extension that instead gives you whatever "Prelude.fromInteger"
-happens to be in scope.  Then you can
-       import Prelude ()
-       import MyPrelude as Prelude
-to get the desired effect.
-
-The SyntaxNames record gives all the names you can rebind in this way.
-This record of names needs to go through the renamer to map RdrNames to
-Names (i.e. look up the names in the in-scope environment), to suck in
-their type signatures from interface file(s).
-
-\begin{code}
-type SyntaxList = [(Name, RdrName)]
-  -- Maps a Name, which identifies the standard built-in thing
-  -- to a RdrName for the re-mapped version of the built-in thing
-
-syntaxList :: SyntaxList
-syntaxList =[  (fromIntegerName,       mkUnqual varName SLIT("fromInteger"))
-            ,  (fromRationalName,      mkUnqual varName SLIT("fromRational"))
-            ,  (negateName,            mkUnqual varName SLIT("negate"))
-            ,  (minusName,             mkUnqual varName SLIT("-"))
-                       -- For now that's all.  We may add booleans and lists later.
-           ]
-
-
-type SyntaxMap = Name -> Name
-  -- Maps a standard built-in name, such as PrelNum.fromInteger
-  -- to its re-mapped version, such as MyPrelude.fromInteger
-
-vanillaSyntaxMap name = name
-\end{code}
-
-
-%************************************************************************
-%*                                                                     *
 \subsection[Class-std-groups]{Standard groups of Prelude classes}
 %*                                                                     *
 %************************************************************************