2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules and names}
7 Nota Bene: all Names defined in here should come from the base package
9 * ModuleNames for prelude modules,
10 e.g. pREL_BASE_Name :: ModuleName
12 * Modules for prelude modules
13 e.g. pREL_Base :: Module
15 * Uniques for Ids, DataCons, TyCons and Classes that the compiler
16 "knows about" in some way
17 e.g. intTyConKey :: Unique
18 minusClassOpKey :: Unique
20 * Names for Ids, DataCons, TyCons and Classes that the compiler
21 "knows about" in some way
22 e.g. intTyConName :: Name
24 One of these Names contains
25 (a) the module and occurrence name of the thing
27 The may way the compiler "knows about" one of these things is
28 where the type checker or desugarer needs to look it up. For
29 example, when desugaring list comprehensions the desugarer
30 needs to conjure up 'foldr'. It does this by looking up
31 foldrName in the environment.
33 * RdrNames for Ids, DataCons etc that the compiler may emit into
34 generated code (e.g. for deriving). It's not necessary to know
35 the uniques for these guys, only their names
40 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
42 -----------------------------------------------------------
43 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
44 -- (b) Uniques e.g. intTyConKey
45 -- (c) Groups of classes and types
46 -- (d) miscellaneous things
47 -- So many that we export them all
50 #include "HsVersions.h"
52 import Module ( ModuleName, mkBasePkgModule, mkHomeModule, mkModuleName )
53 import OccName ( UserFS, dataName, tcName, clsName, varName,
57 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
58 import Unique ( Unique, Uniquable(..), hasKey,
59 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
60 mkPreludeTyConUnique, mkPreludeClassUnique,
61 mkTupleTyConUnique, isTupleKey
63 import BasicTypes ( Boxity(..) )
64 import Name ( Name, mkInternalName, mkKnownKeyExternalName, mkWiredInName, nameUnique )
65 import SrcLoc ( noSrcLoc )
66 import Util ( nOfThem )
67 import Panic ( panic )
74 %************************************************************************
76 \subsection{Local Names}
78 %************************************************************************
80 This *local* name is used by the interactive stuff
83 itName uniq = mkInternalName uniq (mkOccFS varName FSLIT("it")) noSrcLoc
87 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
88 -- during compiler debugging.
89 mkUnboundName :: RdrName -> Name
90 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
92 isUnboundName :: Name -> Bool
93 isUnboundName name = name `hasKey` unboundKey
97 %************************************************************************
99 \subsection{Built-in-syntax names
101 %************************************************************************
103 Built-in syntax names are parsed directly into Exact RdrNames.
104 This predicate just identifies them.
107 isBuiltInSyntaxName :: Name -> Bool
108 isBuiltInSyntaxName n
110 || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
111 funTyConKey, parrTyConKey]
116 %************************************************************************
118 \subsection{Known key Names}
120 %************************************************************************
122 This section tells what the compiler knows about the assocation of
123 names with uniques. These ones are the *non* wired-in ones. The
124 wired in ones are defined in TysWiredIn etc.
127 basicKnownKeyNames :: [Name]
129 = [ -- Type constructors (synonyms especially)
130 ioTyConName, ioDataConName,
137 mutableByteArrayTyConName,
140 -- Classes. *Must* include:
141 -- classes that are grabbed by key (e.g., eqClassKey)
142 -- classes in "Class.standardClassKeys" (quite a few)
143 eqClassName, -- mentioned, derivable
144 ordClassName, -- derivable
145 boundedClassName, -- derivable
146 numClassName, -- mentioned, numeric
147 enumClassName, -- derivable
150 realClassName, -- numeric
151 integralClassName, -- numeric
152 fractionalClassName, -- numeric
153 floatingClassName, -- numeric
154 realFracClassName, -- numeric
155 realFloatClassName, -- numeric
156 cCallableClassName, -- mentioned, ccallish
157 cReturnableClassName, -- mentioned, ccallish
162 negateName, minusName,
163 fromRationalName, fromIntegerName,
167 enumFromName, enumFromThenName,
168 enumFromThenToName, enumFromToName,
169 enumFromToPName, enumFromThenToPName,
172 thenMName, bindMName, returnMName, failMName,
173 thenIOName, bindIOName, returnIOName, failIOName,
179 arrAName, composeAName, firstAName,
180 appAName, choiceAName, loopAName,
195 unpackCStringName, unpackCStringAppendName,
196 unpackCStringFoldrName, unpackCStringUtf8Name,
199 concatName, filterName,
200 zipName, foldrName, buildName, augmentName, appendName,
202 -- Parallel array operations
203 nullPName, lengthPName, replicatePName, mapPName,
204 filterPName, zipPName, crossPName, indexPName,
205 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
207 -- FFI primitive types that are not wired-in.
208 stablePtrTyConName, ptrTyConName, funPtrTyConName, addrTyConName,
209 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
210 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
213 unsafeCoerceName, otherwiseIdName,
214 plusIntegerName, timesIntegerName,
215 eqStringName, assertName, assertErrorName, runSTRepName,
216 printName, splitName, fstName, sndName,
223 , eitherTyConName, leftDataConName, rightDataConName
226 , objectTyConName, marshalObjectName, unmarshalObjectName
227 , marshalStringName, unmarshalStringName, checkDotnetResName
230 monadNames :: [Name] -- The monad ops need by a HsDo
231 monadNames = [returnMName, failMName, bindMName, thenMName]
235 %************************************************************************
237 \subsection{Module names}
239 %************************************************************************
242 --MetaHaskell Extension Add a new module here
244 pRELUDE_Name = mkModuleName "Prelude"
245 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
246 pREL_BASE_Name = mkModuleName "GHC.Base"
247 pREL_ENUM_Name = mkModuleName "GHC.Enum"
248 pREL_SHOW_Name = mkModuleName "GHC.Show"
249 pREL_READ_Name = mkModuleName "GHC.Read"
250 pREL_NUM_Name = mkModuleName "GHC.Num"
251 pREL_LIST_Name = mkModuleName "GHC.List"
252 pREL_PARR_Name = mkModuleName "GHC.PArr"
253 pREL_TUP_Name = mkModuleName "Data.Tuple"
254 pREL_EITHER_Name = mkModuleName "Data.Either"
255 pREL_PACK_Name = mkModuleName "GHC.Pack"
256 pREL_CONC_Name = mkModuleName "GHC.Conc"
257 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
258 pREL_ST_Name = mkModuleName "GHC.ST"
259 pREL_ARR_Name = mkModuleName "GHC.Arr"
260 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
261 pREL_STABLE_Name = mkModuleName "GHC.Stable"
262 pREL_ADDR_Name = mkModuleName "GHC.Addr"
263 pREL_PTR_Name = mkModuleName "GHC.Ptr"
264 pREL_ERR_Name = mkModuleName "GHC.Err"
265 pREL_REAL_Name = mkModuleName "GHC.Real"
266 pREL_FLOAT_Name = mkModuleName "GHC.Float"
267 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
268 sYSTEM_IO_Name = mkModuleName "System.IO"
269 dYNAMIC_Name = mkModuleName "Data.Dynamic"
270 tRAVERSE_Name = mkModuleName "Data.Traverse"
271 gENERICS_Name = mkModuleName "Data.Generics"
272 dOTNET_Name = mkModuleName "GHC.Dotnet"
274 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
275 lEX_Name = mkModuleName "Text.Read.Lex"
277 mAIN_Name = mkModuleName "Main"
278 pREL_INT_Name = mkModuleName "GHC.Int"
279 pREL_WORD_Name = mkModuleName "GHC.Word"
280 mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
281 aRROW_Name = mkModuleName "Control.Arrow"
282 aDDR_Name = mkModuleName "Addr"
284 gLA_EXTS_Name = mkModuleName "GHC.Exts"
286 gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
287 pREL_BASE = mkBasePkgModule pREL_BASE_Name
288 pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
289 pREL_PTR = mkBasePkgModule pREL_PTR_Name
290 pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
291 pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
292 pREL_PACK = mkBasePkgModule pREL_PACK_Name
293 pREL_ERR = mkBasePkgModule pREL_ERR_Name
294 pREL_NUM = mkBasePkgModule pREL_NUM_Name
295 pREL_REAL = mkBasePkgModule pREL_REAL_Name
296 pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
297 pRELUDE = mkBasePkgModule pRELUDE_Name
299 -- MetaHaskell Extension text2 from Meta/work/gen.hs
300 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
302 dOLLAR_MAIN_Name = mkModuleName "$Main" -- Root module for initialisation
303 dOLLAR_MAIN = mkHomeModule dOLLAR_MAIN_Name
304 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
307 %************************************************************************
309 \subsection{Constructing the names of tuples
311 %************************************************************************
314 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
316 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
317 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
318 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
319 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
320 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
321 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
323 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
324 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
325 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
326 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
327 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
328 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
332 %************************************************************************
336 %************************************************************************
339 eq_RDR = nameRdrName eqName
340 ge_RDR = nameRdrName geName
341 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
342 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
343 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
344 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
345 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
346 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
347 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
349 eqClass_RDR = nameRdrName eqClassName
350 numClass_RDR = nameRdrName numClassName
351 ordClass_RDR = nameRdrName ordClassName
352 enumClass_RDR = nameRdrName enumClassName
353 monadClass_RDR = nameRdrName monadClassName
354 cCallableClass_RDR = nameRdrName cCallableClassName
355 cReturnableClass_RDR = nameRdrName cReturnableClassName
357 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
358 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
360 foldr_RDR = nameRdrName foldrName
361 build_RDR = nameRdrName buildName
362 returnM_RDR = nameRdrName returnMName
363 bindM_RDR = nameRdrName bindMName
364 failM_RDR = nameRdrName failMName
366 false_RDR = nameRdrName falseDataConName
367 true_RDR = nameRdrName trueDataConName
368 and_RDR = nameRdrName andName
370 left_RDR = nameRdrName leftDataConName
371 right_RDR = nameRdrName rightDataConName
373 error_RDR = nameRdrName errorName
375 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
376 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
377 mkInt_RDR = nameRdrName intDataConName
379 enumFrom_RDR = nameRdrName enumFromName
380 enumFromTo_RDR = nameRdrName enumFromToName
381 enumFromThen_RDR = nameRdrName enumFromThenName
382 enumFromThenTo_RDR = nameRdrName enumFromThenToName
384 ratioDataCon_RDR = nameRdrName ratioDataConName
385 plusInteger_RDR = nameRdrName plusIntegerName
386 timesInteger_RDR = nameRdrName timesIntegerName
388 ioDataCon_RDR = nameRdrName ioDataConName
390 eqString_RDR = nameRdrName eqStringName
391 unpackCString_RDR = nameRdrName unpackCStringName
392 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
393 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
395 newStablePtr_RDR = nameRdrName newStablePtrName
396 addrDataCon_RDR = dataQual_RDR aDDR_Name FSLIT("A#")
398 bindIO_RDR = nameRdrName bindIOName
399 returnIO_RDR = nameRdrName returnIOName
401 fromInteger_RDR = nameRdrName fromIntegerName
402 fromRational_RDR = nameRdrName fromRationalName
403 minus_RDR = nameRdrName minusName
404 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
405 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
407 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
409 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
410 getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
411 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
412 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
413 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
414 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
415 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
416 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
417 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
419 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
420 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
421 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
422 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
423 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
424 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
425 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
426 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
428 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
429 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
430 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
432 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
433 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
434 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
435 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
437 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
438 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
439 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
440 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
441 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
442 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
444 typeOf_RDR = varQual_RDR dYNAMIC_Name FSLIT("typeOf")
445 mkTypeRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkAppTy")
446 mkTyConRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkTyCon")
448 constr_RDR = dataQual_RDR gENERICS_Name FSLIT("Constr")
449 gfoldl_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldl")
450 gfoldr_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldr")
451 gunfold_RDR = varQual_RDR gENERICS_Name FSLIT("gunfold")
452 gmapT_RDR = varQual_RDR gENERICS_Name FSLIT("gmapT")
453 gmapQ_RDR = varQual_RDR gENERICS_Name FSLIT("gmapQ")
454 gmapM_RDR = varQual_RDR gENERICS_Name FSLIT("gmapM")
455 conOf_RDR = varQual_RDR gENERICS_Name FSLIT("conOf")
456 consOf_RDR = varQual_RDR gENERICS_Name FSLIT("consOf")
458 undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
462 %************************************************************************
464 \subsection{Known-key names}
466 %************************************************************************
468 Many of these Names are not really "built in", but some parts of the
469 compiler (notably the deriving mechanism) need to mention their names,
470 and it's convenient to write them all down in one place.
472 --MetaHaskell Extension add the constrs and the lower case case
473 -- guys as well (perhaps) e.g. see trueDataConName below
477 dollarMainName = varQual dOLLAR_MAIN_Name FSLIT("main") dollarMainKey
478 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
480 -- Stuff from GHC.Prim
481 superKindName = kindQual FSLIT("KX") kindConKey
482 superBoxityName = kindQual FSLIT("BX") boxityConKey
483 liftedConName = kindQual FSLIT("*") liftedConKey
484 unliftedConName = kindQual FSLIT("#") unliftedConKey
485 openKindConName = kindQual FSLIT("?") anyBoxConKey
486 typeConName = kindQual FSLIT("Type") typeConKey
488 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
489 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
490 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
491 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
492 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
493 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
494 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
495 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
496 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
497 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
498 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
499 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
500 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
501 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
502 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
503 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
504 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
505 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
506 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
507 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
508 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
509 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
510 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
511 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
512 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
513 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
514 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
516 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
517 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
518 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
519 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
521 -- PrelBase data types and constructors
522 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
523 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
524 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
525 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
526 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
527 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
528 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
529 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
530 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
531 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
532 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
533 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
534 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
536 eitherTyConName = tcQual pREL_EITHER_Name FSLIT("Either") eitherTyConKey
537 leftDataConName = dataQual pREL_EITHER_Name FSLIT("Left") leftDataConKey
538 rightDataConName = dataQual pREL_EITHER_Name FSLIT("Right") rightDataConKey
541 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
542 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
543 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
544 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
545 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
546 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
547 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
549 -- Base strings Strings
550 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
551 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
552 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
553 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
554 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
556 -- Base classes (Eq, Ord, Functor)
557 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
558 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
559 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
562 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
563 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
564 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
565 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
566 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
569 -- Random PrelBase functions
570 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
571 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
572 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
573 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
574 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
575 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
576 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
577 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
578 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
581 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
582 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
585 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
586 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
587 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
588 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
589 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
590 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
591 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
592 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
593 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
595 -- PrelReal types and classes
596 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
597 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
598 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
599 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
600 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
601 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
602 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
603 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
606 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
607 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
608 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
609 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
610 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
611 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
614 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
616 -- Class Typeable and Data
617 typeableClassName = clsQual dYNAMIC_Name FSLIT("Typeable") typeableClassKey
618 dataClassName = clsQual gENERICS_Name FSLIT("Data") dataClassKey
620 -- Enum module (Enum, Bounded)
621 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
622 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
623 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
624 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
625 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
626 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
629 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
630 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
631 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
634 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
637 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
639 -- parallel array types and functions
640 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
641 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
642 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
643 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
644 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
645 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
646 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
647 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
648 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
649 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
650 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
651 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
652 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
653 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
654 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
655 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
658 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
659 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
660 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
661 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
662 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
663 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
666 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
668 -- Int, Word, and Addr things
669 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
670 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
671 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
672 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
675 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
676 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
677 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
678 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
679 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
680 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
683 addrTyConName = tcQual aDDR_Name FSLIT("Addr") addrTyConKey
686 ptrTyConName = tcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
687 funPtrTyConName = tcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
690 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
691 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
693 -- Foreign objects and weak pointers
694 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
695 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
698 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
699 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
700 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
701 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
702 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
703 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
704 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
705 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
706 nonExhaustiveGuardsErrorName
707 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
710 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
712 -- The "split" Id for splittable implicit parameters
713 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
715 -- Recursive-do notation
716 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
719 arrAName = varQual aRROW_Name FSLIT("arr") arrAIdKey
720 composeAName = varQual aRROW_Name FSLIT(">>>") composeAIdKey
721 firstAName = varQual aRROW_Name FSLIT("first") firstAIdKey
722 appAName = varQual aRROW_Name FSLIT("app") appAIdKey
723 choiceAName = varQual aRROW_Name FSLIT("|||") choiceAIdKey
724 loopAName = varQual aRROW_Name FSLIT("loop") loopAIdKey
727 objectTyConName = wTcQual dOTNET_Name FSLIT("Object") objectTyConKey
728 unmarshalObjectName = varQual dOTNET_Name FSLIT("unmarshalObject") unmarshalObjectIdKey
729 marshalObjectName = varQual dOTNET_Name FSLIT("marshalObject") marshalObjectIdKey
730 marshalStringName = varQual dOTNET_Name FSLIT("marshalString") marshalStringIdKey
731 unmarshalStringName = varQual dOTNET_Name FSLIT("unmarshalString") unmarshalStringIdKey
732 checkDotnetResName = varQual dOTNET_Name FSLIT("checkResult") checkDotnetResNameIdKey
736 %************************************************************************
738 \subsection{Local helpers}
740 %************************************************************************
742 All these are original names; hence mkOrig
745 varQual = mk_known_key_name varName
746 dataQual = mk_known_key_name dataName -- All the constructor names here are for the DataCon
747 -- itself, which lives in the VarName name space
748 tcQual = mk_known_key_name tcName
749 clsQual = mk_known_key_name clsName
751 wVarQual = mk_wired_in_name varName -- The wired-in analogues
752 wDataQual = mk_wired_in_name dataName
753 wTcQual = mk_wired_in_name tcName
755 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- The RDR analogues
756 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
757 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
758 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
760 mk_known_key_name space mod str uniq
761 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
762 mk_wired_in_name space mod str uniq
763 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
765 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
766 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
767 -- And they don't come from any particular module; indeed we always
768 -- want to print them unqualified. Hence the LocalName
771 %************************************************************************
773 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
775 %************************************************************************
776 --MetaHaskell extension hand allocate keys here
779 boundedClassKey = mkPreludeClassUnique 1
780 enumClassKey = mkPreludeClassUnique 2
781 eqClassKey = mkPreludeClassUnique 3
782 typeableClassKey = mkPreludeClassUnique 4
783 floatingClassKey = mkPreludeClassUnique 5
784 fractionalClassKey = mkPreludeClassUnique 6
785 integralClassKey = mkPreludeClassUnique 7
786 monadClassKey = mkPreludeClassUnique 8
787 dataClassKey = mkPreludeClassUnique 9
788 functorClassKey = mkPreludeClassUnique 10
789 numClassKey = mkPreludeClassUnique 11
790 ordClassKey = mkPreludeClassUnique 12
791 readClassKey = mkPreludeClassUnique 13
792 realClassKey = mkPreludeClassUnique 14
793 realFloatClassKey = mkPreludeClassUnique 15
794 realFracClassKey = mkPreludeClassUnique 16
795 showClassKey = mkPreludeClassUnique 17
796 cCallableClassKey = mkPreludeClassUnique 18
797 cReturnableClassKey = mkPreludeClassUnique 19
798 ixClassKey = mkPreludeClassUnique 20
801 %************************************************************************
803 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
805 %************************************************************************
808 addrPrimTyConKey = mkPreludeTyConUnique 1
809 addrTyConKey = mkPreludeTyConUnique 2
810 arrayPrimTyConKey = mkPreludeTyConUnique 3
811 boolTyConKey = mkPreludeTyConUnique 4
812 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
813 charPrimTyConKey = mkPreludeTyConUnique 7
814 charTyConKey = mkPreludeTyConUnique 8
815 doublePrimTyConKey = mkPreludeTyConUnique 9
816 doubleTyConKey = mkPreludeTyConUnique 10
817 floatPrimTyConKey = mkPreludeTyConUnique 11
818 floatTyConKey = mkPreludeTyConUnique 12
819 funTyConKey = mkPreludeTyConUnique 13
820 intPrimTyConKey = mkPreludeTyConUnique 14
821 intTyConKey = mkPreludeTyConUnique 15
822 int8TyConKey = mkPreludeTyConUnique 16
823 int16TyConKey = mkPreludeTyConUnique 17
824 int32PrimTyConKey = mkPreludeTyConUnique 18
825 int32TyConKey = mkPreludeTyConUnique 19
826 int64PrimTyConKey = mkPreludeTyConUnique 20
827 int64TyConKey = mkPreludeTyConUnique 21
828 integerTyConKey = mkPreludeTyConUnique 22
829 listTyConKey = mkPreludeTyConUnique 23
830 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
831 weakPrimTyConKey = mkPreludeTyConUnique 27
832 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
833 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
834 orderingTyConKey = mkPreludeTyConUnique 30
835 mVarPrimTyConKey = mkPreludeTyConUnique 31
836 ratioTyConKey = mkPreludeTyConUnique 32
837 rationalTyConKey = mkPreludeTyConUnique 33
838 realWorldTyConKey = mkPreludeTyConUnique 34
839 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
840 stablePtrTyConKey = mkPreludeTyConUnique 36
841 statePrimTyConKey = mkPreludeTyConUnique 50
842 stableNamePrimTyConKey = mkPreludeTyConUnique 51
843 stableNameTyConKey = mkPreludeTyConUnique 52
844 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
845 mutVarPrimTyConKey = mkPreludeTyConUnique 55
846 ioTyConKey = mkPreludeTyConUnique 56
847 byteArrayTyConKey = mkPreludeTyConUnique 57
848 wordPrimTyConKey = mkPreludeTyConUnique 58
849 wordTyConKey = mkPreludeTyConUnique 59
850 word8TyConKey = mkPreludeTyConUnique 60
851 word16TyConKey = mkPreludeTyConUnique 61
852 word32PrimTyConKey = mkPreludeTyConUnique 62
853 word32TyConKey = mkPreludeTyConUnique 63
854 word64PrimTyConKey = mkPreludeTyConUnique 64
855 word64TyConKey = mkPreludeTyConUnique 65
856 liftedConKey = mkPreludeTyConUnique 66
857 unliftedConKey = mkPreludeTyConUnique 67
858 anyBoxConKey = mkPreludeTyConUnique 68
859 kindConKey = mkPreludeTyConUnique 69
860 boxityConKey = mkPreludeTyConUnique 70
861 typeConKey = mkPreludeTyConUnique 71
862 threadIdPrimTyConKey = mkPreludeTyConUnique 72
863 bcoPrimTyConKey = mkPreludeTyConUnique 73
864 ptrTyConKey = mkPreludeTyConUnique 74
865 funPtrTyConKey = mkPreludeTyConUnique 75
867 -- Generic Type Constructors
868 crossTyConKey = mkPreludeTyConUnique 79
869 plusTyConKey = mkPreludeTyConUnique 80
870 genUnitTyConKey = mkPreludeTyConUnique 81
872 -- Parallel array type constructor
873 parrTyConKey = mkPreludeTyConUnique 82
876 objectTyConKey = mkPreludeTyConUnique 83
878 eitherTyConKey = mkPreludeTyConUnique 84
880 ---------------- Template Haskell -------------------
881 -- USES TyConUniques 100-119
882 -----------------------------------------------------
884 unitTyConKey = mkTupleTyConUnique Boxed 0
887 %************************************************************************
889 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
891 %************************************************************************
894 charDataConKey = mkPreludeDataConUnique 1
895 consDataConKey = mkPreludeDataConUnique 2
896 doubleDataConKey = mkPreludeDataConUnique 3
897 falseDataConKey = mkPreludeDataConUnique 4
898 floatDataConKey = mkPreludeDataConUnique 5
899 intDataConKey = mkPreludeDataConUnique 6
900 smallIntegerDataConKey = mkPreludeDataConUnique 7
901 largeIntegerDataConKey = mkPreludeDataConUnique 8
902 nilDataConKey = mkPreludeDataConUnique 11
903 ratioDataConKey = mkPreludeDataConUnique 12
904 stableNameDataConKey = mkPreludeDataConUnique 14
905 trueDataConKey = mkPreludeDataConUnique 15
906 wordDataConKey = mkPreludeDataConUnique 16
907 ioDataConKey = mkPreludeDataConUnique 17
909 -- Generic data constructors
910 crossDataConKey = mkPreludeDataConUnique 20
911 inlDataConKey = mkPreludeDataConUnique 21
912 inrDataConKey = mkPreludeDataConUnique 22
913 genUnitDataConKey = mkPreludeDataConUnique 23
915 -- Data constructor for parallel arrays
916 parrDataConKey = mkPreludeDataConUnique 24
918 leftDataConKey = mkPreludeDataConUnique 25
919 rightDataConKey = mkPreludeDataConUnique 26
922 %************************************************************************
924 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
926 %************************************************************************
929 absentErrorIdKey = mkPreludeMiscIdUnique 1
930 augmentIdKey = mkPreludeMiscIdUnique 3
931 appendIdKey = mkPreludeMiscIdUnique 4
932 buildIdKey = mkPreludeMiscIdUnique 5
933 errorIdKey = mkPreludeMiscIdUnique 6
934 foldlIdKey = mkPreludeMiscIdUnique 7
935 foldrIdKey = mkPreludeMiscIdUnique 8
936 recSelErrorIdKey = mkPreludeMiscIdUnique 9
937 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
938 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
939 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
940 integerZeroIdKey = mkPreludeMiscIdUnique 13
941 int2IntegerIdKey = mkPreludeMiscIdUnique 14
942 seqIdKey = mkPreludeMiscIdUnique 15
943 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
944 eqStringIdKey = mkPreludeMiscIdUnique 17
945 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
946 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
947 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
948 parErrorIdKey = mkPreludeMiscIdUnique 21
949 parIdKey = mkPreludeMiscIdUnique 22
950 patErrorIdKey = mkPreludeMiscIdUnique 23
951 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
952 recConErrorIdKey = mkPreludeMiscIdUnique 25
953 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
954 traceIdKey = mkPreludeMiscIdUnique 27
955 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
956 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
957 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
958 unpackCStringIdKey = mkPreludeMiscIdUnique 31
960 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
961 concatIdKey = mkPreludeMiscIdUnique 33
962 filterIdKey = mkPreludeMiscIdUnique 34
963 zipIdKey = mkPreludeMiscIdUnique 35
964 bindIOIdKey = mkPreludeMiscIdUnique 36
965 returnIOIdKey = mkPreludeMiscIdUnique 37
966 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
967 newStablePtrIdKey = mkPreludeMiscIdUnique 39
968 plusIntegerIdKey = mkPreludeMiscIdUnique 41
969 timesIntegerIdKey = mkPreludeMiscIdUnique 42
970 printIdKey = mkPreludeMiscIdUnique 43
971 failIOIdKey = mkPreludeMiscIdUnique 44
972 nullAddrIdKey = mkPreludeMiscIdUnique 46
973 voidArgIdKey = mkPreludeMiscIdUnique 47
974 splitIdKey = mkPreludeMiscIdUnique 48
975 fstIdKey = mkPreludeMiscIdUnique 49
976 sndIdKey = mkPreludeMiscIdUnique 50
977 otherwiseIdKey = mkPreludeMiscIdUnique 51
978 assertIdKey = mkPreludeMiscIdUnique 53
979 runSTRepIdKey = mkPreludeMiscIdUnique 54
981 dollarMainKey = mkPreludeMiscIdUnique 55
982 runMainKey = mkPreludeMiscIdUnique 56
984 andIdKey = mkPreludeMiscIdUnique 57
985 orIdKey = mkPreludeMiscIdUnique 58
986 thenIOIdKey = mkPreludeMiscIdUnique 59
987 lazyIdKey = mkPreludeMiscIdUnique 60
988 assertErrorIdKey = mkPreludeMiscIdUnique 61
990 -- Parallel array functions
991 nullPIdKey = mkPreludeMiscIdUnique 80
992 lengthPIdKey = mkPreludeMiscIdUnique 81
993 replicatePIdKey = mkPreludeMiscIdUnique 82
994 mapPIdKey = mkPreludeMiscIdUnique 83
995 filterPIdKey = mkPreludeMiscIdUnique 84
996 zipPIdKey = mkPreludeMiscIdUnique 85
997 crossPIdKey = mkPreludeMiscIdUnique 86
998 indexPIdKey = mkPreludeMiscIdUnique 87
999 toPIdKey = mkPreludeMiscIdUnique 88
1000 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1001 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1002 bpermutePIdKey = mkPreludeMiscIdUnique 91
1003 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
1004 indexOfPIdKey = mkPreludeMiscIdUnique 93
1007 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1008 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1009 marshalStringIdKey = mkPreludeMiscIdUnique 96
1010 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1011 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1015 Certain class operations from Prelude classes. They get their own
1016 uniques so we can look them up easily when we want to conjure them up
1017 during type checking.
1020 -- Just a place holder for unbound variables produced by the renamer:
1021 unboundKey = mkPreludeMiscIdUnique 101
1023 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1024 minusClassOpKey = mkPreludeMiscIdUnique 103
1025 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1026 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1027 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1028 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1029 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1030 eqClassOpKey = mkPreludeMiscIdUnique 109
1031 geClassOpKey = mkPreludeMiscIdUnique 110
1032 negateClassOpKey = mkPreludeMiscIdUnique 111
1033 failMClassOpKey = mkPreludeMiscIdUnique 112
1034 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1035 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1036 returnMClassOpKey = mkPreludeMiscIdUnique 117
1038 -- Recursive do notation
1039 mfixIdKey = mkPreludeMiscIdUnique 118
1042 arrAIdKey = mkPreludeMiscIdUnique 119
1043 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1044 firstAIdKey = mkPreludeMiscIdUnique 121
1045 appAIdKey = mkPreludeMiscIdUnique 122
1046 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1047 loopAIdKey = mkPreludeMiscIdUnique 124
1049 ---------------- Template Haskell -------------------
1050 -- USES IdUniques 200-299
1051 -----------------------------------------------------
1055 %************************************************************************
1057 \subsection{Standard groups of types}
1059 %************************************************************************
1071 -- Renamer always imports these data decls replete with constructors
1072 -- so that desugarer can always see their constructors. Ugh!
1077 , mutableByteArrayTyConKey
1091 %************************************************************************
1093 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1095 %************************************************************************
1097 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1098 even though every numeric class has these two as a superclass,
1099 because the list of ambiguous dictionaries hasn't been simplified.
1107 ++ fractionalClassKeys
1109 fractionalClassKeys =
1110 [ fractionalClassKey
1116 -- the strictness analyser needs to know about numeric types
1117 -- (see SaAbsInt.lhs)
1118 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1124 , cReturnableClassKey
1128 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1130 -- We have to have "CCallable" and "CReturnable" in the standard
1131 -- classes, so that if you go...
1133 -- _ccall_ foo ... 93{-numeric literal-} ...
1135 -- ... it can do The Right Thing on the 93.
1137 noDictClassKeys -- These classes are used only for type annotations;
1138 -- they are not implemented by dictionaries, ever.
1142 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1147 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1148 boundedClassKey, showClassKey, readClassKey ]