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