2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules and names}
7 The strings identify built-in prelude modules. They are
8 defined here so as to avod
10 * ModuleNames for prelude modules,
11 e.g. pREL_BASE_Name :: ModuleName
13 * Modules for prelude modules
14 e.g. pREL_Base :: Module
16 * Uniques for Ids, DataCons, TyCons and Classes that the compiler
17 "knows about" in some way
18 e.g. intTyConKey :: Unique
19 minusClassOpKey :: Unique
21 * Names for Ids, DataCons, TyCons and Classes that the compiler
22 "knows about" in some way
23 e.g. intTyConName :: Name
25 One of these Names contains
26 (a) the module and occurrence name of the thing
28 The may way the compiler "knows about" one of these things is
29 where the type checker or desugarer needs to look it up. For
30 example, when desugaring list comprehensions the desugarer
31 needs to conjure up 'foldr'. It does this by looking up
32 foldrName in the environment.
34 * RdrNames for Ids, DataCons etc that the compiler may emit into
35 generated code (e.g. for deriving). It's not necessary to know
36 the uniques for these guys, only their names
41 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
43 -----------------------------------------------------------
44 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
45 -- (b) Uniques e.g. intTyConKey
46 -- So many that we export them all
48 -----------------------------------------------------------
50 mkTupNameStr, isBuiltInSyntaxName,
52 ------------------------------------------------------------
53 -- Goups of classes and types
54 needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
55 fractionalClassKeys, numericClassKeys, standardClassKeys,
56 derivableClassKeys, -- things are needed as a result of a
58 numericTyKeys, cCallishTyKeys,
60 mkUnboundName, isUnboundName
63 #include "HsVersions.h"
65 import Module ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName,mkVanillaModule )
66 import OccName ( UserFS, dataName, tcName, clsName,
70 -- to avoid clashes with Meta.var we must make a local alias for OccName.varName
71 -- we do this by removing varName from the import of OccName above, making
72 -- a qualified instance of OccName and using OccNameAlias.varName where varName
73 -- ws previously used in this file.
74 import qualified OccName as OccNameAlias
77 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
78 import Unique ( Unique, Uniquable(..), hasKey,
79 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
80 mkPreludeTyConUnique, mkPreludeClassUnique,
81 mkTupleTyConUnique, isTupleKey
83 import BasicTypes ( Boxity(..) )
84 import Name ( Name, mkInternalName, mkKnownKeyExternalName, mkWiredInName, nameUnique )
85 import SrcLoc ( noSrcLoc )
86 import Util ( nOfThem )
87 import Panic ( panic )
94 %************************************************************************
96 \subsection{Local Names}
98 %************************************************************************
100 This *local* name is used by the interactive stuff
103 itName uniq = mkInternalName uniq (mkOccFS OccNameAlias.varName FSLIT("it")) noSrcLoc
107 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
108 -- during compiler debugging.
109 mkUnboundName :: RdrName -> Name
110 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
112 isUnboundName :: Name -> Bool
113 isUnboundName name = name `hasKey` unboundKey
117 %************************************************************************
119 \subsection{Built-in-syntax names
121 %************************************************************************
123 Built-in syntax names are parsed directly into Exact RdrNames.
124 This predicate just identifies them.
127 isBuiltInSyntaxName :: Name -> Bool
128 isBuiltInSyntaxName n
130 || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
131 funTyConKey, parrTyConKey]
136 %************************************************************************
138 \subsection{Known key Names}
140 %************************************************************************
142 This section tells what the compiler knows about the assocation of
143 names with uniques. These ones are the *non* wired-in ones. The
144 wired in ones are defined in TysWiredIn etc.
147 basicKnownKeyNames :: [Name]
149 = [ -- Type constructors (synonyms especially)
150 ioTyConName, ioDataConName,
157 mutableByteArrayTyConName,
160 stablePtrDataConName,
162 -- Classes. *Must* include:
163 -- classes that are grabbed by key (e.g., eqClassKey)
164 -- classes in "Class.standardClassKeys" (quite a few)
165 eqClassName, -- mentioned, derivable
166 ordClassName, -- derivable
167 boundedClassName, -- derivable
168 numClassName, -- mentioned, numeric
169 enumClassName, -- derivable
172 realClassName, -- numeric
173 integralClassName, -- numeric
174 fractionalClassName, -- numeric
175 floatingClassName, -- numeric
176 realFracClassName, -- numeric
177 realFloatClassName, -- numeric
178 cCallableClassName, -- mentioned, ccallish
179 cReturnableClassName, -- mentioned, ccallish
182 negateName, minusName,
183 fromRationalName, fromIntegerName,
187 enumFromName, enumFromThenName,
188 enumFromThenToName, enumFromToName,
189 enumFromToPName, enumFromThenToPName,
192 thenMName, bindMName, returnMName, failMName,
193 thenIOName, bindIOName, returnIOName, failIOName,
211 unpackCStringName, unpackCStringAppendName,
212 unpackCStringFoldrName, unpackCStringUtf8Name,
215 concatName, filterName,
216 zipName, foldrName, buildName, augmentName, appendName,
218 -- Parallel array operations
219 nullPName, lengthPName, replicatePName, mapPName,
220 filterPName, zipPName, crossPName, indexPName,
221 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
223 -- FFI primitive types that are not wired-in.
224 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
225 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
228 unsafeCoerceName, otherwiseIdName,
229 plusIntegerName, timesIntegerName,
230 eqStringName, assertName, assertErrorName, runSTRepName,
231 printName, splitName, fstName, sndName,
238 monadNames :: [Name] -- The monad ops need by a HsDo
239 monadNames = [returnMName, failMName, bindMName, thenMName]
243 %************************************************************************
245 \subsection{Module names}
247 %************************************************************************
250 --MetaHaskell Extension Add a new module here
252 pRELUDE_Name = mkModuleName "Prelude"
253 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
254 pREL_BASE_Name = mkModuleName "GHC.Base"
255 pREL_ENUM_Name = mkModuleName "GHC.Enum"
256 pREL_SHOW_Name = mkModuleName "GHC.Show"
257 pREL_READ_Name = mkModuleName "GHC.Read"
258 pREL_NUM_Name = mkModuleName "GHC.Num"
259 pREL_LIST_Name = mkModuleName "GHC.List"
260 pREL_PARR_Name = mkModuleName "GHC.PArr"
261 pREL_TUP_Name = mkModuleName "Data.Tuple"
262 pREL_PACK_Name = mkModuleName "GHC.Pack"
263 pREL_CONC_Name = mkModuleName "GHC.Conc"
264 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
265 pREL_ST_Name = mkModuleName "GHC.ST"
266 pREL_ARR_Name = mkModuleName "GHC.Arr"
267 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
268 pREL_STABLE_Name = mkModuleName "GHC.Stable"
269 pREL_ADDR_Name = mkModuleName "GHC.Addr"
270 pREL_PTR_Name = mkModuleName "GHC.Ptr"
271 pREL_ERR_Name = mkModuleName "GHC.Err"
272 pREL_REAL_Name = mkModuleName "GHC.Real"
273 pREL_FLOAT_Name = mkModuleName "GHC.Float"
274 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
275 sYSTEM_IO_Name = mkModuleName "System.IO"
277 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
278 lEX_Name = mkModuleName "Text.Read.Lex"
280 mAIN_Name = mkModuleName "Main"
281 pREL_INT_Name = mkModuleName "GHC.Int"
282 pREL_WORD_Name = mkModuleName "GHC.Word"
283 mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
284 aDDR_Name = mkModuleName "Addr"
286 gLA_EXTS_Name = mkModuleName "GHC.Exts"
288 gHC_PRIM = mkPrelModule gHC_PRIM_Name
289 pREL_BASE = mkPrelModule pREL_BASE_Name
290 pREL_ADDR = mkPrelModule pREL_ADDR_Name
291 pREL_PTR = mkPrelModule pREL_PTR_Name
292 pREL_STABLE = mkPrelModule pREL_STABLE_Name
293 pREL_IO_BASE = mkPrelModule pREL_IO_BASE_Name
294 pREL_PACK = mkPrelModule pREL_PACK_Name
295 pREL_ERR = mkPrelModule pREL_ERR_Name
296 pREL_NUM = mkPrelModule pREL_NUM_Name
297 pREL_REAL = mkPrelModule pREL_REAL_Name
298 pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
299 pRELUDE = mkPrelModule pRELUDE_Name
302 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
304 -- MetaHaskell Extension text2 from Meta/work/gen.hs
305 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
309 %************************************************************************
311 \subsection{Constructing the names of tuples
313 %************************************************************************
316 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
318 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
319 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
320 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
321 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
322 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
323 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
325 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
326 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
327 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
328 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
329 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
330 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
334 %************************************************************************
338 %************************************************************************
341 getTag_RDR = nameRdrName getTagName
343 eq_RDR = nameRdrName eqName
344 ge_RDR = nameRdrName geName
345 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
346 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
347 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
348 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
349 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
350 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
351 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
353 eqClass_RDR = nameRdrName eqClassName
354 numClass_RDR = nameRdrName numClassName
355 ordClass_RDR = nameRdrName ordClassName
356 enumClass_RDR = nameRdrName enumClassName
357 monadClass_RDR = nameRdrName monadClassName
358 cCallableClass_RDR = nameRdrName cCallableClassName
359 cReturnableClass_RDR = nameRdrName cReturnableClassName
361 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
362 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
364 foldr_RDR = nameRdrName foldrName
365 build_RDR = nameRdrName buildName
366 returnM_RDR = nameRdrName returnMName
367 bindM_RDR = nameRdrName bindMName
368 failM_RDR = nameRdrName failMName
370 false_RDR = nameRdrName falseDataConName
371 true_RDR = nameRdrName trueDataConName
372 and_RDR = nameRdrName andName
374 error_RDR = nameRdrName errorName
376 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
377 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
378 mkInt_RDR = nameRdrName intDataConName
380 enumFrom_RDR = nameRdrName enumFromName
381 enumFromTo_RDR = nameRdrName enumFromToName
382 enumFromThen_RDR = nameRdrName enumFromThenName
383 enumFromThenTo_RDR = nameRdrName enumFromThenToName
385 ratioDataCon_RDR = nameRdrName ratioDataConName
386 plusInteger_RDR = nameRdrName plusIntegerName
387 timesInteger_RDR = nameRdrName timesIntegerName
389 ioDataCon_RDR = nameRdrName ioDataConName
391 eqString_RDR = nameRdrName eqStringName
392 unpackCString_RDR = nameRdrName unpackCStringName
393 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
394 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
396 newStablePtr_RDR = nameRdrName newStablePtrName
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 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
411 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
412 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
413 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
414 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
415 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
416 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
418 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
419 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
420 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
421 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
422 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
423 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
424 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
425 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
427 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
428 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
429 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
431 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
432 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
433 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
434 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
436 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
437 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
438 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
439 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
440 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
441 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
445 %************************************************************************
447 \subsection{Known-key names}
449 %************************************************************************
451 Many of these Names are not really "built in", but some parts of the
452 compiler (notably the deriving mechanism) need to mention their names,
453 and it's convenient to write them all down in one place.
455 --MetaHaskell Extension add the constrs and the lower case case
456 -- guys as well (perhaps) e.g. see trueDataConName below
460 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
461 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
463 -- Stuff from GHC.Prim
464 usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
465 usManyTyConName = kindQual FSLIT("!") usManyTyConKey
466 superKindName = kindQual FSLIT("KX") kindConKey
467 superBoxityName = kindQual FSLIT("BX") boxityConKey
468 liftedConName = kindQual FSLIT("*") liftedConKey
469 unliftedConName = kindQual FSLIT("#") unliftedConKey
470 openKindConName = kindQual FSLIT("?") anyBoxConKey
471 usageKindConName = kindQual FSLIT("$") usageConKey
472 typeConName = kindQual FSLIT("Type") typeConKey
474 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
475 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
476 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
477 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
478 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
479 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
480 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
481 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
482 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
483 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
484 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
485 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
486 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
487 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
488 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
489 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
490 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
491 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
492 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
493 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
494 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
495 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
496 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
497 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
498 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
499 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
500 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
502 getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
503 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
504 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
505 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
506 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
508 -- PrelBase data types and constructors
509 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
510 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
511 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
512 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
513 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
514 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
515 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
516 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
517 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
518 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
519 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
520 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
521 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
524 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
525 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
526 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
527 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
528 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
529 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
530 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
532 -- Base strings Strings
533 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
534 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
535 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
536 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
537 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
539 -- Base classes (Eq, Ord, Functor)
540 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
541 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
542 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
545 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
546 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
547 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
548 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
549 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
552 -- Random PrelBase functions
553 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
554 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
555 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
556 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
557 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
558 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
559 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
560 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
561 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
564 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
565 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
568 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
569 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
570 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
571 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
572 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
573 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
574 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
575 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
576 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
578 -- PrelReal types and classes
579 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
580 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
581 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
582 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
583 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
584 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
585 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
586 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
589 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
590 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
591 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
592 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
593 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
594 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
597 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
599 -- Enum module (Enum, Bounded)
600 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
601 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
602 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
603 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
604 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
605 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
608 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
609 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
610 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
613 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
616 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
618 -- parallel array types and functions
619 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
620 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
621 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
622 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
623 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
624 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
625 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
626 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
627 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
628 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
629 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
630 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
631 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
632 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
633 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
634 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
637 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
638 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
639 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
640 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
641 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
642 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
645 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
647 -- Int, Word, and Addr things
648 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
649 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
650 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
651 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
654 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
655 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
656 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
657 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
658 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
659 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
662 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
663 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
666 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
667 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
668 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
669 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
672 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
673 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
675 -- Foreign objects and weak pointers
676 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
677 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
678 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
681 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
682 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
683 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
684 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
685 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
686 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
687 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
688 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
689 nonExhaustiveGuardsErrorName
690 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
693 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
695 -- The "split" Id for splittable implicit parameters
696 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
698 -- Recursive-do notation
699 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
702 %************************************************************************
704 \subsection{Local helpers}
706 %************************************************************************
708 All these are original names; hence mkOrig
711 varQual = mk_known_key_name OccNameAlias.varName -- Note use of local alias vName
712 dataQual = mk_known_key_name dataName
713 tcQual = mk_known_key_name tcName
714 clsQual = mk_known_key_name clsName
716 wVarQual = mk_wired_in_name OccNameAlias.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 OccNameAlias.varName str) -- note use of local alias vName
721 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
722 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
723 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
725 mk_known_key_name space mod str uniq
726 = mkKnownKeyExternalName mod (mkOccFS space str) uniq
727 mk_wired_in_name space mod str uniq
728 = mkWiredInName (mkVanillaModule 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 floatingClassKey = mkPreludeClassUnique 5
748 fractionalClassKey = mkPreludeClassUnique 6
749 integralClassKey = mkPreludeClassUnique 7
750 monadClassKey = mkPreludeClassUnique 8
751 functorClassKey = mkPreludeClassUnique 10
752 numClassKey = mkPreludeClassUnique 11
753 ordClassKey = mkPreludeClassUnique 12
754 readClassKey = mkPreludeClassUnique 13
755 realClassKey = mkPreludeClassUnique 14
756 realFloatClassKey = mkPreludeClassUnique 15
757 realFracClassKey = mkPreludeClassUnique 16
758 showClassKey = mkPreludeClassUnique 17
760 cCallableClassKey = mkPreludeClassUnique 18
761 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 -- Usage type constructors
833 usageConKey = mkPreludeTyConUnique 76
834 usOnceTyConKey = mkPreludeTyConUnique 77
835 usManyTyConKey = mkPreludeTyConUnique 78
837 -- Generic Type Constructors
838 crossTyConKey = mkPreludeTyConUnique 79
839 plusTyConKey = mkPreludeTyConUnique 80
840 genUnitTyConKey = mkPreludeTyConUnique 81
842 -- Parallel array type constructor
843 parrTyConKey = mkPreludeTyConUnique 82
845 ---------------- Template Haskell -------------------
846 -- USES TyConUniques 100-119
847 -----------------------------------------------------
849 unitTyConKey = mkTupleTyConUnique Boxed 0
852 %************************************************************************
854 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
856 %************************************************************************
859 addrDataConKey = mkPreludeDataConUnique 0
860 charDataConKey = mkPreludeDataConUnique 1
861 consDataConKey = mkPreludeDataConUnique 2
862 doubleDataConKey = mkPreludeDataConUnique 3
863 falseDataConKey = mkPreludeDataConUnique 4
864 floatDataConKey = mkPreludeDataConUnique 5
865 intDataConKey = mkPreludeDataConUnique 6
866 smallIntegerDataConKey = mkPreludeDataConUnique 7
867 largeIntegerDataConKey = mkPreludeDataConUnique 8
868 nilDataConKey = mkPreludeDataConUnique 11
869 ratioDataConKey = mkPreludeDataConUnique 12
870 stablePtrDataConKey = mkPreludeDataConUnique 13
871 stableNameDataConKey = mkPreludeDataConUnique 14
872 trueDataConKey = mkPreludeDataConUnique 15
873 wordDataConKey = mkPreludeDataConUnique 16
874 ioDataConKey = mkPreludeDataConUnique 17
875 ptrDataConKey = mkPreludeDataConUnique 18
876 funPtrDataConKey = mkPreludeDataConUnique 19
878 -- Generic data constructors
879 crossDataConKey = mkPreludeDataConUnique 20
880 inlDataConKey = mkPreludeDataConUnique 21
881 inrDataConKey = mkPreludeDataConUnique 22
882 genUnitDataConKey = mkPreludeDataConUnique 23
884 -- Data constructor for parallel arrays
885 parrDataConKey = mkPreludeDataConUnique 24
888 %************************************************************************
890 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
892 %************************************************************************
895 absentErrorIdKey = mkPreludeMiscIdUnique 1
896 getTagIdKey = mkPreludeMiscIdUnique 2
897 augmentIdKey = mkPreludeMiscIdUnique 3
898 appendIdKey = mkPreludeMiscIdUnique 4
899 buildIdKey = mkPreludeMiscIdUnique 5
900 errorIdKey = mkPreludeMiscIdUnique 6
901 foldlIdKey = mkPreludeMiscIdUnique 7
902 foldrIdKey = mkPreludeMiscIdUnique 8
903 recSelErrorIdKey = mkPreludeMiscIdUnique 9
904 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
905 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
906 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
907 integerZeroIdKey = mkPreludeMiscIdUnique 13
908 int2IntegerIdKey = mkPreludeMiscIdUnique 14
909 seqIdKey = mkPreludeMiscIdUnique 15
910 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
911 eqStringIdKey = mkPreludeMiscIdUnique 17
912 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
913 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
914 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
915 parErrorIdKey = mkPreludeMiscIdUnique 21
916 parIdKey = mkPreludeMiscIdUnique 22
917 patErrorIdKey = mkPreludeMiscIdUnique 23
918 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
919 recConErrorIdKey = mkPreludeMiscIdUnique 25
920 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
921 traceIdKey = mkPreludeMiscIdUnique 27
922 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
923 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
924 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
925 unpackCStringIdKey = mkPreludeMiscIdUnique 31
927 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
928 concatIdKey = mkPreludeMiscIdUnique 33
929 filterIdKey = mkPreludeMiscIdUnique 34
930 zipIdKey = mkPreludeMiscIdUnique 35
931 bindIOIdKey = mkPreludeMiscIdUnique 36
932 returnIOIdKey = mkPreludeMiscIdUnique 37
933 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
934 newStablePtrIdKey = mkPreludeMiscIdUnique 39
935 plusIntegerIdKey = mkPreludeMiscIdUnique 41
936 timesIntegerIdKey = mkPreludeMiscIdUnique 42
937 printIdKey = mkPreludeMiscIdUnique 43
938 failIOIdKey = mkPreludeMiscIdUnique 44
939 nullAddrIdKey = mkPreludeMiscIdUnique 46
940 voidArgIdKey = mkPreludeMiscIdUnique 47
941 splitIdKey = mkPreludeMiscIdUnique 48
942 fstIdKey = mkPreludeMiscIdUnique 49
943 sndIdKey = mkPreludeMiscIdUnique 50
944 otherwiseIdKey = mkPreludeMiscIdUnique 51
945 assertIdKey = mkPreludeMiscIdUnique 53
946 runSTRepIdKey = mkPreludeMiscIdUnique 54
948 dollarMainKey = mkPreludeMiscIdUnique 55
949 runMainKey = mkPreludeMiscIdUnique 56
951 andIdKey = mkPreludeMiscIdUnique 57
952 orIdKey = mkPreludeMiscIdUnique 58
953 thenIOIdKey = mkPreludeMiscIdUnique 59
954 lazyIdKey = mkPreludeMiscIdUnique 60
955 assertErrorIdKey = mkPreludeMiscIdUnique 61
957 -- Parallel array functions
958 nullPIdKey = mkPreludeMiscIdUnique 80
959 lengthPIdKey = mkPreludeMiscIdUnique 81
960 replicatePIdKey = mkPreludeMiscIdUnique 82
961 mapPIdKey = mkPreludeMiscIdUnique 83
962 filterPIdKey = mkPreludeMiscIdUnique 84
963 zipPIdKey = mkPreludeMiscIdUnique 85
964 crossPIdKey = mkPreludeMiscIdUnique 86
965 indexPIdKey = mkPreludeMiscIdUnique 87
966 toPIdKey = mkPreludeMiscIdUnique 88
967 enumFromToPIdKey = mkPreludeMiscIdUnique 89
968 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
969 bpermutePIdKey = mkPreludeMiscIdUnique 91
970 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
971 indexOfPIdKey = mkPreludeMiscIdUnique 93
974 Certain class operations from Prelude classes. They get their own
975 uniques so we can look them up easily when we want to conjure them up
976 during type checking.
979 -- Just a place holder for unbound variables produced by the renamer:
980 unboundKey = mkPreludeMiscIdUnique 101
982 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
983 minusClassOpKey = mkPreludeMiscIdUnique 103
984 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
985 enumFromClassOpKey = mkPreludeMiscIdUnique 105
986 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
987 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
988 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
989 eqClassOpKey = mkPreludeMiscIdUnique 109
990 geClassOpKey = mkPreludeMiscIdUnique 110
991 negateClassOpKey = mkPreludeMiscIdUnique 111
992 failMClassOpKey = mkPreludeMiscIdUnique 112
993 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
994 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
995 returnMClassOpKey = mkPreludeMiscIdUnique 117
997 -- Recursive do notation
998 mfixIdKey = mkPreludeMiscIdUnique 118
1000 ---------------- Template Haskell -------------------
1001 -- USES IdUniques 200-299
1002 -----------------------------------------------------
1006 %************************************************************************
1008 \subsection{Standard groups of types}
1010 %************************************************************************
1022 -- Renamer always imports these data decls replete with constructors
1023 -- so that desugarer can always see their constructors. Ugh!
1028 , mutableByteArrayTyConKey
1042 %************************************************************************
1044 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1046 %************************************************************************
1048 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1049 even though every numeric class has these two as a superclass,
1050 because the list of ambiguous dictionaries hasn't been simplified.
1058 ++ fractionalClassKeys
1060 fractionalClassKeys =
1061 [ fractionalClassKey
1067 -- the strictness analyser needs to know about numeric types
1068 -- (see SaAbsInt.lhs)
1069 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1075 , cReturnableClassKey
1079 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1081 -- We have to have "CCallable" and "CReturnable" in the standard
1082 -- classes, so that if you go...
1084 -- _ccall_ foo ... 93{-numeric literal-} ...
1086 -- ... it can do The Right Thing on the 93.
1088 noDictClassKeys -- These classes are used only for type annotations;
1089 -- they are not implemented by dictionaries, ever.
1093 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1098 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1099 boundedClassKey, showClassKey, readClassKey ]