X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2FPrelNames.lhs;h=74ce7dfafb9432189b0c6b270f2faa91da69bb4b;hb=2cc5b907318f97e19b28b2ad8ed9ff8c1f401dcc;hp=c2da0aa38c15bea3849293cbc29a7708e9f53f8e;hpb=51666a19707f4ca34eec28a14bffbbc7d642e647;p=ghc-hetmet.git diff --git a/ghc/compiler/prelude/PrelNames.lhs b/ghc/compiler/prelude/PrelNames.lhs index c2da0aa..74ce7df 100644 --- a/ghc/compiler/prelude/PrelNames.lhs +++ b/ghc/compiler/prelude/PrelNames.lhs @@ -95,8 +95,8 @@ knownKeyNames :: [Name] knownKeyNames = [ -- Type constructors (synonyms especially) - ioTyConName, - mainName, + ioTyConName, ioDataConName, + runMainName, orderingTyConName, rationalTyConName, ratioDataConName, @@ -118,7 +118,6 @@ knownKeyNames numClassName, -- mentioned, numeric enumClassName, -- derivable monadClassName, - monadPlusClassName, functorClassName, showClassName, -- derivable realClassName, -- numeric @@ -148,7 +147,11 @@ knownKeyNames returnMName, failMName, fromRationalName, - + + -- not class methods, but overloaded (for parallel arrays) + enumFromToPName, + enumFromThenToPName, + deRefStablePtrName, newStablePtrName, bindIOName, @@ -159,7 +162,6 @@ knownKeyNames mapName, appendName, unpackCStringName, - unpackCStringListName, unpackCStringAppendName, unpackCStringFoldrName, unpackCStringUtf8Name, @@ -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_IO_Name = mkModuleName "GHC.IO" +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" + 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 @@ -358,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 @@ -368,18 +407,28 @@ 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 -unpackCStringListName = varQual pREL_BASE_Name SLIT("unpackCStringList#") unpackCStringListIdKey unpackCStringAppendName = varQual pREL_BASE_Name SLIT("unpackAppendCString#") unpackCStringAppendIdKey unpackCStringFoldrName = varQual pREL_BASE_Name SLIT("unpackFoldrCString#") unpackCStringFoldrIdKey unpackCStringUtf8Name = varQual pREL_BASE_Name SLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey @@ -392,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 @@ -447,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 @@ -455,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 @@ -492,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_FOREIGN_Name SLIT("ForeignPtr") foreignPtrTyConKey -foreignPtrDataConName = dataQual pREL_FOREIGN_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 @@ -506,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} %************************************************************************ @@ -577,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 @@ -662,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 @@ -671,7 +743,7 @@ realClassKey = mkPreludeClassUnique 14 realFloatClassKey = mkPreludeClassUnique 15 realFracClassKey = mkPreludeClassUnique 16 showClassKey = mkPreludeClassUnique 17 - + cCallableClassKey = mkPreludeClassUnique 18 cReturnableClassKey = mkPreludeClassUnique 19 @@ -756,6 +828,9 @@ crossTyConKey = mkPreludeTyConUnique 79 plusTyConKey = mkPreludeTyConUnique 80 genUnitTyConKey = mkPreludeTyConUnique 81 +-- Parallel array type constructor +parrTyConKey = mkPreludeTyConUnique 82 + unitTyConKey = mkTupleTyConUnique Boxed 0 \end{code} @@ -792,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} %************************************************************************ @@ -845,9 +923,47 @@ plusIntegerIdKey = mkPreludeMiscIdUnique 41 timesIntegerIdKey = mkPreludeMiscIdUnique 42 printIdKey = mkPreludeMiscIdUnique 43 failIOIdKey = mkPreludeMiscIdUnique 44 -unpackCStringListIdKey = mkPreludeMiscIdUnique 45 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 @@ -855,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 @@ -867,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}