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 stablePtrDataConName,
142 -- Classes. *Must* include:
143 -- classes that are grabbed by key (e.g., eqClassKey)
144 -- classes in "Class.standardClassKeys" (quite a few)
145 eqClassName, -- mentioned, derivable
146 ordClassName, -- derivable
147 boundedClassName, -- derivable
148 numClassName, -- mentioned, numeric
149 enumClassName, -- derivable
152 realClassName, -- numeric
153 integralClassName, -- numeric
154 fractionalClassName, -- numeric
155 floatingClassName, -- numeric
156 realFracClassName, -- numeric
157 realFloatClassName, -- numeric
158 cCallableClassName, -- mentioned, ccallish
159 cReturnableClassName, -- mentioned, ccallish
164 negateName, minusName,
165 fromRationalName, fromIntegerName,
169 enumFromName, enumFromThenName,
170 enumFromThenToName, enumFromToName,
171 enumFromToPName, enumFromThenToPName,
174 thenMName, bindMName, returnMName, failMName,
175 thenIOName, bindIOName, returnIOName, failIOName,
193 unpackCStringName, unpackCStringAppendName,
194 unpackCStringFoldrName, unpackCStringUtf8Name,
197 concatName, filterName,
198 zipName, foldrName, buildName, augmentName, appendName,
200 -- Parallel array operations
201 nullPName, lengthPName, replicatePName, mapPName,
202 filterPName, zipPName, crossPName, indexPName,
203 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
205 -- FFI primitive types that are not wired-in.
206 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
207 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
210 unsafeCoerceName, otherwiseIdName,
211 plusIntegerName, timesIntegerName,
212 eqStringName, assertName, assertErrorName, runSTRepName,
213 printName, splitName, fstName, sndName,
220 monadNames :: [Name] -- The monad ops need by a HsDo
221 monadNames = [returnMName, failMName, bindMName, thenMName]
225 %************************************************************************
227 \subsection{Module names}
229 %************************************************************************
232 --MetaHaskell Extension Add a new module here
234 pRELUDE_Name = mkModuleName "Prelude"
235 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
236 pREL_BASE_Name = mkModuleName "GHC.Base"
237 pREL_ENUM_Name = mkModuleName "GHC.Enum"
238 pREL_SHOW_Name = mkModuleName "GHC.Show"
239 pREL_READ_Name = mkModuleName "GHC.Read"
240 pREL_NUM_Name = mkModuleName "GHC.Num"
241 pREL_LIST_Name = mkModuleName "GHC.List"
242 pREL_PARR_Name = mkModuleName "GHC.PArr"
243 pREL_TUP_Name = mkModuleName "Data.Tuple"
244 pREL_PACK_Name = mkModuleName "GHC.Pack"
245 pREL_CONC_Name = mkModuleName "GHC.Conc"
246 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
247 pREL_ST_Name = mkModuleName "GHC.ST"
248 pREL_ARR_Name = mkModuleName "GHC.Arr"
249 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
250 pREL_STABLE_Name = mkModuleName "GHC.Stable"
251 pREL_ADDR_Name = mkModuleName "GHC.Addr"
252 pREL_PTR_Name = mkModuleName "GHC.Ptr"
253 pREL_ERR_Name = mkModuleName "GHC.Err"
254 pREL_REAL_Name = mkModuleName "GHC.Real"
255 pREL_FLOAT_Name = mkModuleName "GHC.Float"
256 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
257 sYSTEM_IO_Name = mkModuleName "System.IO"
258 dYNAMIC_Name = mkModuleName "Data.Dynamic"
259 gENERICS_Name = mkModuleName "Data.Generics"
261 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
262 lEX_Name = mkModuleName "Text.Read.Lex"
264 mAIN_Name = mkModuleName "Main"
265 pREL_INT_Name = mkModuleName "GHC.Int"
266 pREL_WORD_Name = mkModuleName "GHC.Word"
267 mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
268 aDDR_Name = mkModuleName "Addr"
270 gLA_EXTS_Name = mkModuleName "GHC.Exts"
272 gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
273 pREL_BASE = mkBasePkgModule pREL_BASE_Name
274 pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
275 pREL_PTR = mkBasePkgModule pREL_PTR_Name
276 pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
277 pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
278 pREL_PACK = mkBasePkgModule pREL_PACK_Name
279 pREL_ERR = mkBasePkgModule pREL_ERR_Name
280 pREL_NUM = mkBasePkgModule pREL_NUM_Name
281 pREL_REAL = mkBasePkgModule pREL_REAL_Name
282 pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
283 pRELUDE = mkBasePkgModule pRELUDE_Name
286 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
288 -- MetaHaskell Extension text2 from Meta/work/gen.hs
289 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
293 %************************************************************************
295 \subsection{Constructing the names of tuples
297 %************************************************************************
300 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
302 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
303 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
304 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
305 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
306 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
307 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
309 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
310 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
311 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
312 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
313 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
314 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
318 %************************************************************************
322 %************************************************************************
325 eq_RDR = nameRdrName eqName
326 ge_RDR = nameRdrName geName
327 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
328 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
329 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
330 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
331 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
332 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
333 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
335 eqClass_RDR = nameRdrName eqClassName
336 numClass_RDR = nameRdrName numClassName
337 ordClass_RDR = nameRdrName ordClassName
338 enumClass_RDR = nameRdrName enumClassName
339 monadClass_RDR = nameRdrName monadClassName
340 cCallableClass_RDR = nameRdrName cCallableClassName
341 cReturnableClass_RDR = nameRdrName cReturnableClassName
343 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
344 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
346 foldr_RDR = nameRdrName foldrName
347 build_RDR = nameRdrName buildName
348 returnM_RDR = nameRdrName returnMName
349 bindM_RDR = nameRdrName bindMName
350 failM_RDR = nameRdrName failMName
352 false_RDR = nameRdrName falseDataConName
353 true_RDR = nameRdrName trueDataConName
354 and_RDR = nameRdrName andName
356 error_RDR = nameRdrName errorName
358 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
359 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
360 mkInt_RDR = nameRdrName intDataConName
362 enumFrom_RDR = nameRdrName enumFromName
363 enumFromTo_RDR = nameRdrName enumFromToName
364 enumFromThen_RDR = nameRdrName enumFromThenName
365 enumFromThenTo_RDR = nameRdrName enumFromThenToName
367 ratioDataCon_RDR = nameRdrName ratioDataConName
368 plusInteger_RDR = nameRdrName plusIntegerName
369 timesInteger_RDR = nameRdrName timesIntegerName
371 ioDataCon_RDR = nameRdrName ioDataConName
373 eqString_RDR = nameRdrName eqStringName
374 unpackCString_RDR = nameRdrName unpackCStringName
375 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
376 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
378 newStablePtr_RDR = nameRdrName newStablePtrName
380 bindIO_RDR = nameRdrName bindIOName
381 returnIO_RDR = nameRdrName returnIOName
383 fromInteger_RDR = nameRdrName fromIntegerName
384 fromRational_RDR = nameRdrName fromRationalName
385 minus_RDR = nameRdrName minusName
386 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
387 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
389 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
391 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
392 getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
393 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
394 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
395 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
396 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
397 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
398 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
399 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
401 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
402 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
403 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
404 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
405 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
406 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
407 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
408 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
410 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
411 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
412 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
414 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
415 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
416 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
417 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
419 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
420 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
421 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
422 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
423 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
424 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
426 typeOf_RDR = varQual_RDR dYNAMIC_Name FSLIT("typeOf")
427 mkTypeRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkAppTy")
428 mkTyConRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkTyCon")
430 constr_RDR = dataQual_RDR gENERICS_Name FSLIT("Constr")
431 gfoldl_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldl")
432 gfoldr_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldr")
433 gunfold_RDR = varQual_RDR gENERICS_Name FSLIT("gunfold")
434 gmapT_RDR = varQual_RDR gENERICS_Name FSLIT("gmapT")
435 gmapQ_RDR = varQual_RDR gENERICS_Name FSLIT("gmapQ")
436 gmapM_RDR = varQual_RDR gENERICS_Name FSLIT("gmapM")
437 conOf_RDR = varQual_RDR gENERICS_Name FSLIT("conOf")
438 consOf_RDR = varQual_RDR gENERICS_Name FSLIT("consOf")
440 undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
444 %************************************************************************
446 \subsection{Known-key names}
448 %************************************************************************
450 Many of these Names are not really "built in", but some parts of the
451 compiler (notably the deriving mechanism) need to mention their names,
452 and it's convenient to write them all down in one place.
454 --MetaHaskell Extension add the constrs and the lower case case
455 -- guys as well (perhaps) e.g. see trueDataConName below
459 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
460 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
462 -- Stuff from GHC.Prim
463 superKindName = kindQual FSLIT("KX") kindConKey
464 superBoxityName = kindQual FSLIT("BX") boxityConKey
465 liftedConName = kindQual FSLIT("*") liftedConKey
466 unliftedConName = kindQual FSLIT("#") unliftedConKey
467 openKindConName = kindQual FSLIT("?") anyBoxConKey
468 typeConName = kindQual FSLIT("Type") typeConKey
470 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
471 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
472 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
473 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
474 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
475 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
476 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
477 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
478 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
479 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
480 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
481 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
482 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
483 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
484 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
485 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
486 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
487 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
488 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
489 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
490 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
491 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
492 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
493 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
494 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
495 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
496 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
498 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
499 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
500 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
501 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
503 -- PrelBase data types and constructors
504 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
505 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
506 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
507 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
508 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
509 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
510 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
511 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
512 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
513 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
514 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
515 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
516 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
519 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
520 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
521 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
522 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
523 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
524 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
525 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
527 -- Base strings Strings
528 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
529 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
530 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
531 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
532 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
534 -- Base classes (Eq, Ord, Functor)
535 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
536 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
537 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
540 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
541 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
542 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
543 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
544 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
547 -- Random PrelBase functions
548 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
549 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
550 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
551 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
552 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
553 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
554 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
555 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
556 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
559 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
560 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
563 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
564 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
565 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
566 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
567 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
568 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
569 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
570 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
571 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
573 -- PrelReal types and classes
574 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
575 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
576 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
577 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
578 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
579 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
580 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
581 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
584 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
585 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
586 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
587 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
588 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
589 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
592 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
594 -- Class Typeable and Data
595 typeableClassName = clsQual dYNAMIC_Name FSLIT("Typeable") typeableClassKey
596 dataClassName = clsQual gENERICS_Name FSLIT("Data") dataClassKey
598 -- Enum module (Enum, Bounded)
599 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
600 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
601 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
602 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
603 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
604 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
607 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
608 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
609 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
612 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
615 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
617 -- parallel array types and functions
618 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
619 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
620 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
621 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
622 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
623 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
624 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
625 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
626 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
627 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
628 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
629 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
630 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
631 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
632 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
633 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
636 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
637 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
638 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
639 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
640 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
641 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
644 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
646 -- Int, Word, and Addr things
647 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
648 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
649 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
650 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
653 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
654 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
655 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
656 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
657 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
658 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
661 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
662 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
665 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
666 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
667 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
668 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
671 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
672 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
674 -- Foreign objects and weak pointers
675 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
676 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
677 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
680 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
681 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
682 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
683 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
684 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
685 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
686 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
687 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
688 nonExhaustiveGuardsErrorName
689 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
692 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
694 -- The "split" Id for splittable implicit parameters
695 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
697 -- Recursive-do notation
698 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
701 %************************************************************************
703 \subsection{Local helpers}
705 %************************************************************************
707 All these are original names; hence mkOrig
710 varQual = mk_known_key_name varName
711 dataQual = mk_known_key_name dataName -- All the constructor names here are for the DataCon
712 -- itself, which lives in the VarName name space
713 tcQual = mk_known_key_name tcName
714 clsQual = mk_known_key_name clsName
716 wVarQual = mk_wired_in_name varName -- The wired-in analogues
717 wDataQual = mk_wired_in_name dataName
718 wTcQual = mk_wired_in_name tcName
720 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- The RDR analogues
721 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
722 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
723 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
725 mk_known_key_name space mod str uniq
726 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
727 mk_wired_in_name space mod str uniq
728 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
730 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
731 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
732 -- And they don't come from any particular module; indeed we always
733 -- want to print them unqualified. Hence the LocalName
736 %************************************************************************
738 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
740 %************************************************************************
741 --MetaHaskell extension hand allocate keys here
744 boundedClassKey = mkPreludeClassUnique 1
745 enumClassKey = mkPreludeClassUnique 2
746 eqClassKey = mkPreludeClassUnique 3
747 typeableClassKey = mkPreludeClassUnique 4
748 floatingClassKey = mkPreludeClassUnique 5
749 fractionalClassKey = mkPreludeClassUnique 6
750 integralClassKey = mkPreludeClassUnique 7
751 monadClassKey = mkPreludeClassUnique 8
752 dataClassKey = mkPreludeClassUnique 9
753 functorClassKey = mkPreludeClassUnique 10
754 numClassKey = mkPreludeClassUnique 11
755 ordClassKey = mkPreludeClassUnique 12
756 readClassKey = mkPreludeClassUnique 13
757 realClassKey = mkPreludeClassUnique 14
758 realFloatClassKey = mkPreludeClassUnique 15
759 realFracClassKey = mkPreludeClassUnique 16
760 showClassKey = mkPreludeClassUnique 17
761 cCallableClassKey = mkPreludeClassUnique 18
762 cReturnableClassKey = mkPreludeClassUnique 19
763 ixClassKey = mkPreludeClassUnique 20
766 %************************************************************************
768 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
770 %************************************************************************
773 addrPrimTyConKey = mkPreludeTyConUnique 1
774 addrTyConKey = mkPreludeTyConUnique 2
775 arrayPrimTyConKey = mkPreludeTyConUnique 3
776 boolTyConKey = mkPreludeTyConUnique 4
777 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
778 charPrimTyConKey = mkPreludeTyConUnique 7
779 charTyConKey = mkPreludeTyConUnique 8
780 doublePrimTyConKey = mkPreludeTyConUnique 9
781 doubleTyConKey = mkPreludeTyConUnique 10
782 floatPrimTyConKey = mkPreludeTyConUnique 11
783 floatTyConKey = mkPreludeTyConUnique 12
784 funTyConKey = mkPreludeTyConUnique 13
785 intPrimTyConKey = mkPreludeTyConUnique 14
786 intTyConKey = mkPreludeTyConUnique 15
787 int8TyConKey = mkPreludeTyConUnique 16
788 int16TyConKey = mkPreludeTyConUnique 17
789 int32PrimTyConKey = mkPreludeTyConUnique 18
790 int32TyConKey = mkPreludeTyConUnique 19
791 int64PrimTyConKey = mkPreludeTyConUnique 20
792 int64TyConKey = mkPreludeTyConUnique 21
793 integerTyConKey = mkPreludeTyConUnique 22
794 listTyConKey = mkPreludeTyConUnique 23
795 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
796 weakPrimTyConKey = mkPreludeTyConUnique 27
797 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
798 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
799 orderingTyConKey = mkPreludeTyConUnique 30
800 mVarPrimTyConKey = mkPreludeTyConUnique 31
801 ratioTyConKey = mkPreludeTyConUnique 32
802 rationalTyConKey = mkPreludeTyConUnique 33
803 realWorldTyConKey = mkPreludeTyConUnique 34
804 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
805 stablePtrTyConKey = mkPreludeTyConUnique 36
806 statePrimTyConKey = mkPreludeTyConUnique 50
807 stableNamePrimTyConKey = mkPreludeTyConUnique 51
808 stableNameTyConKey = mkPreludeTyConUnique 52
809 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
810 mutVarPrimTyConKey = mkPreludeTyConUnique 55
811 ioTyConKey = mkPreludeTyConUnique 56
812 byteArrayTyConKey = mkPreludeTyConUnique 57
813 wordPrimTyConKey = mkPreludeTyConUnique 58
814 wordTyConKey = mkPreludeTyConUnique 59
815 word8TyConKey = mkPreludeTyConUnique 60
816 word16TyConKey = mkPreludeTyConUnique 61
817 word32PrimTyConKey = mkPreludeTyConUnique 62
818 word32TyConKey = mkPreludeTyConUnique 63
819 word64PrimTyConKey = mkPreludeTyConUnique 64
820 word64TyConKey = mkPreludeTyConUnique 65
821 liftedConKey = mkPreludeTyConUnique 66
822 unliftedConKey = mkPreludeTyConUnique 67
823 anyBoxConKey = mkPreludeTyConUnique 68
824 kindConKey = mkPreludeTyConUnique 69
825 boxityConKey = mkPreludeTyConUnique 70
826 typeConKey = mkPreludeTyConUnique 71
827 threadIdPrimTyConKey = mkPreludeTyConUnique 72
828 bcoPrimTyConKey = mkPreludeTyConUnique 73
829 ptrTyConKey = mkPreludeTyConUnique 74
830 funPtrTyConKey = mkPreludeTyConUnique 75
832 -- Generic Type Constructors
833 crossTyConKey = mkPreludeTyConUnique 79
834 plusTyConKey = mkPreludeTyConUnique 80
835 genUnitTyConKey = mkPreludeTyConUnique 81
837 -- Parallel array type constructor
838 parrTyConKey = mkPreludeTyConUnique 82
840 ---------------- Template Haskell -------------------
841 -- USES TyConUniques 100-119
842 -----------------------------------------------------
844 unitTyConKey = mkTupleTyConUnique Boxed 0
847 %************************************************************************
849 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
851 %************************************************************************
854 addrDataConKey = mkPreludeDataConUnique 0
855 charDataConKey = mkPreludeDataConUnique 1
856 consDataConKey = mkPreludeDataConUnique 2
857 doubleDataConKey = mkPreludeDataConUnique 3
858 falseDataConKey = mkPreludeDataConUnique 4
859 floatDataConKey = mkPreludeDataConUnique 5
860 intDataConKey = mkPreludeDataConUnique 6
861 smallIntegerDataConKey = mkPreludeDataConUnique 7
862 largeIntegerDataConKey = mkPreludeDataConUnique 8
863 nilDataConKey = mkPreludeDataConUnique 11
864 ratioDataConKey = mkPreludeDataConUnique 12
865 stablePtrDataConKey = mkPreludeDataConUnique 13
866 stableNameDataConKey = mkPreludeDataConUnique 14
867 trueDataConKey = mkPreludeDataConUnique 15
868 wordDataConKey = mkPreludeDataConUnique 16
869 ioDataConKey = mkPreludeDataConUnique 17
870 ptrDataConKey = mkPreludeDataConUnique 18
871 funPtrDataConKey = mkPreludeDataConUnique 19
873 -- Generic data constructors
874 crossDataConKey = mkPreludeDataConUnique 20
875 inlDataConKey = mkPreludeDataConUnique 21
876 inrDataConKey = mkPreludeDataConUnique 22
877 genUnitDataConKey = mkPreludeDataConUnique 23
879 -- Data constructor for parallel arrays
880 parrDataConKey = mkPreludeDataConUnique 24
883 %************************************************************************
885 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
887 %************************************************************************
890 absentErrorIdKey = mkPreludeMiscIdUnique 1
891 augmentIdKey = mkPreludeMiscIdUnique 3
892 appendIdKey = mkPreludeMiscIdUnique 4
893 buildIdKey = mkPreludeMiscIdUnique 5
894 errorIdKey = mkPreludeMiscIdUnique 6
895 foldlIdKey = mkPreludeMiscIdUnique 7
896 foldrIdKey = mkPreludeMiscIdUnique 8
897 recSelErrorIdKey = mkPreludeMiscIdUnique 9
898 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
899 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
900 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
901 integerZeroIdKey = mkPreludeMiscIdUnique 13
902 int2IntegerIdKey = mkPreludeMiscIdUnique 14
903 seqIdKey = mkPreludeMiscIdUnique 15
904 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
905 eqStringIdKey = mkPreludeMiscIdUnique 17
906 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
907 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
908 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
909 parErrorIdKey = mkPreludeMiscIdUnique 21
910 parIdKey = mkPreludeMiscIdUnique 22
911 patErrorIdKey = mkPreludeMiscIdUnique 23
912 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
913 recConErrorIdKey = mkPreludeMiscIdUnique 25
914 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
915 traceIdKey = mkPreludeMiscIdUnique 27
916 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
917 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
918 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
919 unpackCStringIdKey = mkPreludeMiscIdUnique 31
921 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
922 concatIdKey = mkPreludeMiscIdUnique 33
923 filterIdKey = mkPreludeMiscIdUnique 34
924 zipIdKey = mkPreludeMiscIdUnique 35
925 bindIOIdKey = mkPreludeMiscIdUnique 36
926 returnIOIdKey = mkPreludeMiscIdUnique 37
927 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
928 newStablePtrIdKey = mkPreludeMiscIdUnique 39
929 plusIntegerIdKey = mkPreludeMiscIdUnique 41
930 timesIntegerIdKey = mkPreludeMiscIdUnique 42
931 printIdKey = mkPreludeMiscIdUnique 43
932 failIOIdKey = mkPreludeMiscIdUnique 44
933 nullAddrIdKey = mkPreludeMiscIdUnique 46
934 voidArgIdKey = mkPreludeMiscIdUnique 47
935 splitIdKey = mkPreludeMiscIdUnique 48
936 fstIdKey = mkPreludeMiscIdUnique 49
937 sndIdKey = mkPreludeMiscIdUnique 50
938 otherwiseIdKey = mkPreludeMiscIdUnique 51
939 assertIdKey = mkPreludeMiscIdUnique 53
940 runSTRepIdKey = mkPreludeMiscIdUnique 54
942 dollarMainKey = mkPreludeMiscIdUnique 55
943 runMainKey = mkPreludeMiscIdUnique 56
945 andIdKey = mkPreludeMiscIdUnique 57
946 orIdKey = mkPreludeMiscIdUnique 58
947 thenIOIdKey = mkPreludeMiscIdUnique 59
948 lazyIdKey = mkPreludeMiscIdUnique 60
949 assertErrorIdKey = mkPreludeMiscIdUnique 61
951 -- Parallel array functions
952 nullPIdKey = mkPreludeMiscIdUnique 80
953 lengthPIdKey = mkPreludeMiscIdUnique 81
954 replicatePIdKey = mkPreludeMiscIdUnique 82
955 mapPIdKey = mkPreludeMiscIdUnique 83
956 filterPIdKey = mkPreludeMiscIdUnique 84
957 zipPIdKey = mkPreludeMiscIdUnique 85
958 crossPIdKey = mkPreludeMiscIdUnique 86
959 indexPIdKey = mkPreludeMiscIdUnique 87
960 toPIdKey = mkPreludeMiscIdUnique 88
961 enumFromToPIdKey = mkPreludeMiscIdUnique 89
962 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
963 bpermutePIdKey = mkPreludeMiscIdUnique 91
964 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
965 indexOfPIdKey = mkPreludeMiscIdUnique 93
968 Certain class operations from Prelude classes. They get their own
969 uniques so we can look them up easily when we want to conjure them up
970 during type checking.
973 -- Just a place holder for unbound variables produced by the renamer:
974 unboundKey = mkPreludeMiscIdUnique 101
976 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
977 minusClassOpKey = mkPreludeMiscIdUnique 103
978 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
979 enumFromClassOpKey = mkPreludeMiscIdUnique 105
980 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
981 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
982 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
983 eqClassOpKey = mkPreludeMiscIdUnique 109
984 geClassOpKey = mkPreludeMiscIdUnique 110
985 negateClassOpKey = mkPreludeMiscIdUnique 111
986 failMClassOpKey = mkPreludeMiscIdUnique 112
987 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
988 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
989 returnMClassOpKey = mkPreludeMiscIdUnique 117
991 -- Recursive do notation
992 mfixIdKey = mkPreludeMiscIdUnique 118
994 ---------------- Template Haskell -------------------
995 -- USES IdUniques 200-299
996 -----------------------------------------------------
1000 %************************************************************************
1002 \subsection{Standard groups of types}
1004 %************************************************************************
1016 -- Renamer always imports these data decls replete with constructors
1017 -- so that desugarer can always see their constructors. Ugh!
1022 , mutableByteArrayTyConKey
1036 %************************************************************************
1038 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1040 %************************************************************************
1042 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1043 even though every numeric class has these two as a superclass,
1044 because the list of ambiguous dictionaries hasn't been simplified.
1052 ++ fractionalClassKeys
1054 fractionalClassKeys =
1055 [ fractionalClassKey
1061 -- the strictness analyser needs to know about numeric types
1062 -- (see SaAbsInt.lhs)
1063 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1069 , cReturnableClassKey
1073 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1075 -- We have to have "CCallable" and "CReturnable" in the standard
1076 -- classes, so that if you go...
1078 -- _ccall_ foo ... 93{-numeric literal-} ...
1080 -- ... it can do The Right Thing on the 93.
1082 noDictClassKeys -- These classes are used only for type annotations;
1083 -- they are not implemented by dictionaries, ever.
1087 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1092 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1093 boundedClassKey, showClassKey, readClassKey ]