knownKeyNames,
mkTupNameStr, mkTupConRdrName,
- SyntaxMap, vanillaSyntaxMap, SyntaxList, syntaxList,
-
------------------------------------------------------------
-- Goups of classes and types
needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
import UniqFM
import Unique ( Unique, Uniquable(..), hasKey,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
- mkPreludeTyConUnique, mkPreludeClassUnique
+ mkPreludeTyConUnique, mkPreludeClassUnique,
+ mkTupleTyConUnique
)
import BasicTypes ( Boxity(..), Arity )
import UniqFM ( UniqFM, listToUFM )
knownKeyNames
= [
-- Type constructors (synonyms especially)
- ioTyConName,
- mainName,
+ ioTyConName, ioDataConName,
+ runMainName,
orderingTyConName,
rationalTyConName,
ratioDataConName,
numClassName, -- mentioned, numeric
enumClassName, -- derivable
monadClassName,
- monadPlusClassName,
functorClassName,
showClassName, -- derivable
realClassName, -- numeric
returnMName,
failMName,
fromRationalName,
-
+
+ -- not class methods, but overloaded (for parallel arrays)
+ enumFromToPName,
+ enumFromThenToPName,
+
deRefStablePtrName,
newStablePtrName,
bindIOName,
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,
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}
\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
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}
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
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
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
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
-- 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
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
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
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
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
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}
%************************************************************************
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
fractionalClassKey = mkPreludeClassUnique 6
integralClassKey = mkPreludeClassUnique 7
monadClassKey = mkPreludeClassUnique 8
-monadPlusClassKey = mkPreludeClassUnique 9
functorClassKey = mkPreludeClassUnique 10
numClassKey = mkPreludeClassUnique 11
ordClassKey = mkPreludeClassUnique 12
realFloatClassKey = mkPreludeClassUnique 15
realFracClassKey = mkPreludeClassUnique 16
showClassKey = mkPreludeClassUnique 17
-
+
cCallableClassKey = mkPreludeClassUnique 18
cReturnableClassKey = mkPreludeClassUnique 19
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}
%************************************************************************
inlDataConKey = mkPreludeDataConUnique 21
inrDataConKey = mkPreludeDataConUnique 22
genUnitDataConKey = mkPreludeDataConUnique 23
+
+-- Data constructor for parallel arrays
+parrDataConKey = mkPreludeDataConUnique 24
\end{code}
%************************************************************************
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
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
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
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}
%************************************************************************
%* *
-\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}
%* *
%************************************************************************