\begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
module PrelNames (
Unique, Uniquable(..), hasKey, -- Re-exported for convenience
#include "HsVersions.h"
-import PackageConfig
-import Module ( Module, ModuleName, mkModule, mkModuleNameFS )
-import OccName ( dataName, tcName, clsName, varName, mkOccNameFS,
- mkVarOccFS )
+import Module
+import OccName ( dataName, tcName, clsName, varName, tvName,
+ mkOccNameFS, mkVarOccFS )
import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
import Unique ( Unique, Uniquable(..), hasKey,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
basicKnownKeyNames
= genericTyConNames
++ typeableClassNames
- ++ ndpNames
++ [ -- Type constructors (synonyms especially)
ioTyConName, ioDataConName,
runMainIOName,
stringTyConName,
ratioDataConName,
ratioTyConName,
- integerTyConName, smallIntegerDataConName, largeIntegerDataConName,
+ integerTyConName, smallIntegerName,
-- Classes. *Must* include:
-- classes that are grabbed by key (e.g., eqClassKey)
-- Stable pointers
newStablePtrName,
+ -- GHC Extensions
+ groupWithName,
+
-- Strings and lists
unpackCStringName, unpackCStringAppendName,
unpackCStringFoldrName, unpackCStringUtf8Name,
-- List operations
- concatName, filterName,
+ concatName, filterName, mapName,
zipName, foldrName, buildName, augmentName, appendName,
-- Parallel array operations
- nullPName, lengthPName, replicatePName, mapPName,
+ nullPName, lengthPName, replicatePName, singletonPName, mapPName,
filterPName, zipPName, crossMapPName, indexPName,
toPName, bpermutePName, bpermuteDftPName, indexOfPName,
genericTyConNames :: [Name]
genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
-
-ndpNames :: [Name]
-ndpNames = [ parrayTyConName, paTyConName, preprTyConName, prTyConName
- , uarrTyConName
- , mkPRName
- , closureTyConName
- , mkClosureName, applyClosureName
- , mkClosurePName, applyClosurePName
- , lengthPAName, replicatePAName, emptyPAName, packPAName,
- combinePAName ]
\end{code}
--MetaHaskell Extension Add a new module here
\begin{code}
pRELUDE = mkBaseModule_ pRELUDE_NAME
-gHC_PRIM = mkBaseModule FSLIT("GHC.Prim") -- Primitive types and values
+gHC_PRIM = mkPrimModule FSLIT("GHC.Prim") -- Primitive types and values
+gHC_BOOL = mkPrimModule FSLIT("GHC.Bool")
+gHC_GENERICS = mkPrimModule FSLIT("GHC.Generics")
gHC_BASE = mkBaseModule FSLIT("GHC.Base")
gHC_ENUM = mkBaseModule FSLIT("GHC.Enum")
gHC_SHOW = mkBaseModule FSLIT("GHC.Show")
gHC_READ = mkBaseModule FSLIT("GHC.Read")
gHC_NUM = mkBaseModule FSLIT("GHC.Num")
+gHC_INTEGER = mkIntegerModule FSLIT("GHC.Integer")
gHC_LIST = mkBaseModule FSLIT("GHC.List")
gHC_PARR = mkBaseModule FSLIT("GHC.PArr")
dATA_TUP = mkBaseModule FSLIT("Data.Tuple")
gENERICS = mkBaseModule FSLIT("Data.Generics.Basics")
dOTNET = mkBaseModule FSLIT("GHC.Dotnet")
rEAD_PREC = mkBaseModule FSLIT("Text.ParserCombinators.ReadPrec")
-lEX = mkBaseModule FSLIT("Text.Read.Lex")
+lEX = mkBaseModule FSLIT("Text.Read.Lex")
gHC_INT = mkBaseModule FSLIT("GHC.Int")
gHC_WORD = mkBaseModule FSLIT("GHC.Word")
mONAD = mkBaseModule FSLIT("Control.Monad")
mONAD_FIX = mkBaseModule FSLIT("Control.Monad.Fix")
aRROW = mkBaseModule FSLIT("Control.Arrow")
+gHC_DESUGAR = mkBaseModule FSLIT("GHC.Desugar")
rANDOM = mkBaseModule FSLIT("System.Random")
-gLA_EXTS = mkBaseModule FSLIT("GHC.Exts")
-
-nDP_PARRAY = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.PArray")
-nDP_REPR = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Repr")
-nDP_CLOSURE = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
-nDP_PRIM = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Prim")
-nDP_INSTANCES = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Instances")
-nDP_UARR = mkNDPModule FSLIT("Data.Array.Parallel.Unlifted.Flat.UArr")
+gHC_EXTS = mkBaseModule FSLIT("GHC.Exts")
mAIN = mkMainModule_ mAIN_NAME
rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
pRELUDE_NAME = mkModuleNameFS FSLIT("Prelude")
mAIN_NAME = mkModuleNameFS FSLIT("Main")
+mkPrimModule :: FastString -> Module
+mkPrimModule m = mkModule primPackageId (mkModuleNameFS m)
+
+mkIntegerModule :: FastString -> Module
+mkIntegerModule m = mkModule integerPackageId (mkModuleNameFS m)
+
mkBaseModule :: FastString -> Module
mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
mkBaseModule_ :: ModuleName -> Module
mkBaseModule_ m = mkModule basePackageId m
-mkNDPModule :: FastString -> Module
-mkNDPModule m = mkModule ndpPackageId (mkModuleNameFS m)
-
-mkNDPModule_ :: ModuleName -> Module
-mkNDPModule_ m = mkModule ndpPackageId m
-
mkMainModule :: FastString -> Module
mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
%************************************************************************
\begin{code}
-main_RDR_Unqual = mkUnqual varName FSLIT("main")
+main_RDR_Unqual = mkUnqual varName FSLIT("main")
-- We definitely don't want an Orig RdrName, because
-- main might, in principle, be imported into module Main
+forall_tv_RDR, dot_tv_RDR :: RdrName
+forall_tv_RDR = mkUnqual tvName FSLIT("forall")
+dot_tv_RDR = mkUnqual tvName FSLIT(".")
+
eq_RDR = nameRdrName eqName
ge_RDR = nameRdrName geName
ne_RDR = varQual_RDR gHC_BASE FSLIT("/=")
le_RDR = varQual_RDR gHC_BASE FSLIT("<=")
+lt_RDR = varQual_RDR gHC_BASE FSLIT("<")
gt_RDR = varQual_RDR gHC_BASE FSLIT(">")
compare_RDR = varQual_RDR gHC_BASE FSLIT("compare")
ltTag_RDR = dataQual_RDR gHC_BASE FSLIT("LT")
undefined_RDR = varQual_RDR gHC_ERR FSLIT("undefined")
-crossDataCon_RDR = dataQual_RDR gHC_BASE FSLIT(":*:")
-inlDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inl")
-inrDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inr")
-genUnitDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Unit")
+crossDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT(":*:")
+inlDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT("Inl")
+inrDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT("Inr")
+genUnitDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT("Unit")
----------------------
varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey
-- Generics
-crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey
-plusTyConName = tcQual gHC_BASE FSLIT(":+:") plusTyConKey
-genUnitTyConName = tcQual gHC_BASE FSLIT("Unit") genUnitTyConKey
+crossTyConName = tcQual gHC_GENERICS FSLIT(":*:") crossTyConKey
+plusTyConName = tcQual gHC_GENERICS FSLIT(":+:") plusTyConKey
+genUnitTyConName = tcQual gHC_GENERICS FSLIT("Unit") genUnitTyConKey
-- Base strings Strings
unpackCStringName = varQual gHC_BASE FSLIT("unpackCString#") unpackCStringIdKey
returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey
failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey
+-- Functions for GHC extensions
+groupWithName = varQual gHC_EXTS FSLIT("groupWith") groupWithIdKey
+
-- Random PrelBase functions
fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey
otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey
foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey
buildName = varQual gHC_BASE FSLIT("build") buildIdKey
augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey
+mapName = varQual gHC_BASE FSLIT("map") mapIdKey
appendName = varQual gHC_BASE FSLIT("++") appendIdKey
andName = varQual gHC_BASE FSLIT("&&") andIdKey
orName = varQual gHC_BASE FSLIT("||") orIdKey
fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
minusName = methName gHC_NUM FSLIT("-") minusClassOpKey
negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey
-plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
-timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
-integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
-smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
-largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
+plusIntegerName = varQual gHC_INTEGER FSLIT("plusInteger") plusIntegerIdKey
+timesIntegerName = varQual gHC_INTEGER FSLIT("timesInteger") timesIntegerIdKey
+integerTyConName = tcQual gHC_INTEGER FSLIT("Integer") integerTyConKey
+smallIntegerName = varQual gHC_INTEGER FSLIT("smallInteger") smallIntegerIdKey
-- PrelReal types and classes
rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
enumFromThenToPName= varQual gHC_PARR FSLIT("enumFromThenToP") enumFromThenToPIdKey
nullPName = varQual gHC_PARR FSLIT("nullP") nullPIdKey
lengthPName = varQual gHC_PARR FSLIT("lengthP") lengthPIdKey
+singletonPName = varQual gHC_PARR FSLIT("singletonP") singletonPIdKey
replicatePName = varQual gHC_PARR FSLIT("replicateP") replicatePIdKey
mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey
filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey
-- Arrow notation
arrAName = varQual aRROW FSLIT("arr") arrAIdKey
-composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
+composeAName = varQual gHC_DESUGAR FSLIT(">>>") composeAIdKey
firstAName = varQual aRROW FSLIT("first") firstAIdKey
appAName = varQual aRROW FSLIT("app") appAIdKey
choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
marshalStringName = varQual dOTNET FSLIT("marshalString") marshalStringIdKey
unmarshalStringName = varQual dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
checkDotnetResName = varQual dOTNET FSLIT("checkResult") checkDotnetResNameIdKey
-
--- NDP stuff
-parrayTyConName = tcQual nDP_PARRAY FSLIT("PArray") parrayTyConKey
-paTyConName = tcQual nDP_PARRAY FSLIT("PA") paTyConKey
-preprTyConName = tcQual nDP_PARRAY FSLIT("PRepr") preprTyConKey
-prTyConName = tcQual nDP_PARRAY FSLIT("PR") prTyConKey
-uarrTyConName = tcQual nDP_UARR FSLIT("UArr") uarrTyConKey
-mkPRName = varQual nDP_PARRAY FSLIT("mkPR") mkPRIdKey
-lengthPAName = varQual nDP_PARRAY FSLIT("lengthPA") lengthPAIdKey
-replicatePAName = varQual nDP_PARRAY FSLIT("replicatePA") replicatePAIdKey
-emptyPAName = varQual nDP_PARRAY FSLIT("emptyPA") emptyPAIdKey
-packPAName = varQual nDP_PARRAY FSLIT("packPA") packPAIdKey
-combinePAName = varQual nDP_PARRAY FSLIT("combinePA") combinePAIdKey
-closureTyConName = tcQual nDP_CLOSURE FSLIT(":->") closureTyConKey
-mkClosureName = varQual nDP_CLOSURE FSLIT("mkClosure") mkClosureIdKey
-applyClosureName = varQual nDP_CLOSURE FSLIT("$:") applyClosureIdKey
-mkClosurePName = varQual nDP_CLOSURE FSLIT("mkClosureP") mkClosurePIdKey
-applyClosurePName = varQual nDP_CLOSURE FSLIT("$:^") applyClosurePIdKey
\end{code}
%************************************************************************
stringTyConKey = mkPreludeTyConUnique 134
-parrayTyConKey = mkPreludeTyConUnique 135
-closureTyConKey = mkPreludeTyConUnique 136
-paTyConKey = mkPreludeTyConUnique 137
-preprTyConKey = mkPreludeTyConUnique 138
-prTyConKey = mkPreludeTyConUnique 139
-uarrTyConKey = mkPreludeTyConUnique 140
-
-
---------------- Template Haskell -------------------
-- USES TyConUniques 100-129
-----------------------------------------------------
falseDataConKey = mkPreludeDataConUnique 4
floatDataConKey = mkPreludeDataConUnique 5
intDataConKey = mkPreludeDataConUnique 6
-smallIntegerDataConKey = mkPreludeDataConUnique 7
-largeIntegerDataConKey = mkPreludeDataConUnique 8
nilDataConKey = mkPreludeDataConUnique 11
ratioDataConKey = mkPreludeDataConUnique 12
stableNameDataConKey = mkPreludeDataConUnique 14
returnIOIdKey = mkPreludeMiscIdUnique 37
deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
newStablePtrIdKey = mkPreludeMiscIdUnique 39
+smallIntegerIdKey = mkPreludeMiscIdUnique 40
plusIntegerIdKey = mkPreludeMiscIdUnique 41
timesIntegerIdKey = mkPreludeMiscIdUnique 42
printIdKey = mkPreludeMiscIdUnique 43
inlineIdKey = mkPreludeMiscIdUnique 68
+mapIdKey = mkPreludeMiscIdUnique 69
+groupWithIdKey = mkPreludeMiscIdUnique 70
+
-- Parallel array functions
+singletonPIdKey = mkPreludeMiscIdUnique 79
nullPIdKey = mkPreludeMiscIdUnique 80
lengthPIdKey = mkPreludeMiscIdUnique 81
replicatePIdKey = mkPreludeMiscIdUnique 82
fromStringClassOpKey = mkPreludeMiscIdUnique 125
--- Flattened parallel array functions
-mkClosureIdKey = mkPreludeMiscIdUnique 126
-applyClosureIdKey = mkPreludeMiscIdUnique 127
-mkClosurePIdKey = mkPreludeMiscIdUnique 128
-applyClosurePIdKey = mkPreludeMiscIdUnique 129
-closurePAIdKey = mkPreludeMiscIdUnique 130
-lengthPAIdKey = mkPreludeMiscIdUnique 131
-replicatePAIdKey = mkPreludeMiscIdUnique 132
-emptyPAIdKey = mkPreludeMiscIdUnique 133
-packPAIdKey = mkPreludeMiscIdUnique 134
-combinePAIdKey = mkPreludeMiscIdUnique 135
-mkPRIdKey = mkPreludeMiscIdUnique 136
-
---------------- Template Haskell -------------------
-- USES IdUniques 200-399
-----------------------------------------------------