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 getTag_RDR = nameRdrName getTagName
323 eq_RDR = nameRdrName eqName
324 ge_RDR = nameRdrName geName
325 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
326 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
327 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
328 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
329 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
330 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
331 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
333 eqClass_RDR = nameRdrName eqClassName
334 numClass_RDR = nameRdrName numClassName
335 ordClass_RDR = nameRdrName ordClassName
336 enumClass_RDR = nameRdrName enumClassName
337 monadClass_RDR = nameRdrName monadClassName
338 cCallableClass_RDR = nameRdrName cCallableClassName
339 cReturnableClass_RDR = nameRdrName cReturnableClassName
341 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
342 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
344 foldr_RDR = nameRdrName foldrName
345 build_RDR = nameRdrName buildName
346 returnM_RDR = nameRdrName returnMName
347 bindM_RDR = nameRdrName bindMName
348 failM_RDR = nameRdrName failMName
350 false_RDR = nameRdrName falseDataConName
351 true_RDR = nameRdrName trueDataConName
352 and_RDR = nameRdrName andName
354 error_RDR = nameRdrName errorName
356 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
357 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
358 mkInt_RDR = nameRdrName intDataConName
360 enumFrom_RDR = nameRdrName enumFromName
361 enumFromTo_RDR = nameRdrName enumFromToName
362 enumFromThen_RDR = nameRdrName enumFromThenName
363 enumFromThenTo_RDR = nameRdrName enumFromThenToName
365 ratioDataCon_RDR = nameRdrName ratioDataConName
366 plusInteger_RDR = nameRdrName plusIntegerName
367 timesInteger_RDR = nameRdrName timesIntegerName
369 ioDataCon_RDR = nameRdrName ioDataConName
371 eqString_RDR = nameRdrName eqStringName
372 unpackCString_RDR = nameRdrName unpackCStringName
373 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
374 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
376 newStablePtr_RDR = nameRdrName newStablePtrName
378 bindIO_RDR = nameRdrName bindIOName
379 returnIO_RDR = nameRdrName returnIOName
381 fromInteger_RDR = nameRdrName fromIntegerName
382 fromRational_RDR = nameRdrName fromRationalName
383 minus_RDR = nameRdrName minusName
384 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
385 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
387 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
389 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
390 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
391 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
392 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
393 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
394 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
395 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
396 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
398 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
399 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
400 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
401 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
402 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
403 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
404 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
405 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
407 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
408 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
409 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
411 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
412 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
413 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
414 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
416 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
417 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
418 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
419 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
420 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
421 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
425 %************************************************************************
427 \subsection{Known-key names}
429 %************************************************************************
431 Many of these Names are not really "built in", but some parts of the
432 compiler (notably the deriving mechanism) need to mention their names,
433 and it's convenient to write them all down in one place.
435 --MetaHaskell Extension add the constrs and the lower case case
436 -- guys as well (perhaps) e.g. see trueDataConName below
440 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
441 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
443 -- Stuff from GHC.Prim
444 usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
445 usManyTyConName = kindQual FSLIT("!") usManyTyConKey
446 superKindName = kindQual FSLIT("KX") kindConKey
447 superBoxityName = kindQual FSLIT("BX") boxityConKey
448 liftedConName = kindQual FSLIT("*") liftedConKey
449 unliftedConName = kindQual FSLIT("#") unliftedConKey
450 openKindConName = kindQual FSLIT("?") anyBoxConKey
451 usageKindConName = kindQual FSLIT("$") usageConKey
452 typeConName = kindQual FSLIT("Type") typeConKey
454 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
455 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
456 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
457 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
458 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
459 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
460 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
461 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
462 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
463 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
464 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
465 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
466 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
467 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
468 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
469 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
470 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
471 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
472 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
473 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
474 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
475 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
476 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
477 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
478 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
479 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
480 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
482 getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
483 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
484 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
485 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
486 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
488 -- PrelBase data types and constructors
489 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
490 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
491 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
492 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
493 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
494 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
495 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
496 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
497 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
498 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
499 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
500 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
501 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
504 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
505 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
506 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
507 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
508 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
509 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
510 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
512 -- Base strings Strings
513 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
514 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
515 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
516 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
517 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
519 -- Base classes (Eq, Ord, Functor)
520 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
521 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
522 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
525 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
526 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
527 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
528 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
529 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
532 -- Random PrelBase functions
533 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
534 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
535 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
536 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
537 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
538 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
539 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
540 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
541 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
544 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
545 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
548 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
549 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
550 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
551 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
552 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
553 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
554 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
555 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
556 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
558 -- PrelReal types and classes
559 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
560 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
561 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
562 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
563 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
564 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
565 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
566 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
569 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
570 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
571 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
572 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
573 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
574 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
577 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
579 -- Enum module (Enum, Bounded)
580 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
581 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
582 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
583 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
584 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
585 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
588 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
589 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
590 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
593 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
596 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
598 -- parallel array types and functions
599 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
600 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
601 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
602 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
603 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
604 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
605 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
606 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
607 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
608 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
609 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
610 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
611 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
612 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
613 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
614 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
617 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
618 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
619 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
620 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
621 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
622 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
625 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
627 -- Int, Word, and Addr things
628 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
629 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
630 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
631 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
634 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
635 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
636 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
637 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
638 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
639 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
642 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
643 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
646 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
647 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
648 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
649 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
652 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
653 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
655 -- Foreign objects and weak pointers
656 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
657 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
658 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
661 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
662 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
663 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
664 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
665 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
666 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
667 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
668 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
669 nonExhaustiveGuardsErrorName
670 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
673 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
675 -- The "split" Id for splittable implicit parameters
676 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
678 -- Recursive-do notation
679 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
682 %************************************************************************
684 \subsection{Local helpers}
686 %************************************************************************
688 All these are original names; hence mkOrig
691 varQual = mk_known_key_name varName
692 dataQual = mk_known_key_name dataName
693 tcQual = mk_known_key_name tcName
694 clsQual = mk_known_key_name clsName
696 wVarQual = mk_wired_in_name varName -- The wired-in analogues
697 wDataQual = mk_wired_in_name dataName
698 wTcQual = mk_wired_in_name tcName
700 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- note use of local alias vName
701 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
702 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
703 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
705 mk_known_key_name space mod str uniq
706 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
707 mk_wired_in_name space mod str uniq
708 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
710 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
711 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
712 -- And they don't come from any particular module; indeed we always
713 -- want to print them unqualified. Hence the LocalName
716 %************************************************************************
718 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
720 %************************************************************************
721 --MetaHaskell extension hand allocate keys here
724 boundedClassKey = mkPreludeClassUnique 1
725 enumClassKey = mkPreludeClassUnique 2
726 eqClassKey = mkPreludeClassUnique 3
727 floatingClassKey = mkPreludeClassUnique 5
728 fractionalClassKey = mkPreludeClassUnique 6
729 integralClassKey = mkPreludeClassUnique 7
730 monadClassKey = mkPreludeClassUnique 8
731 functorClassKey = mkPreludeClassUnique 10
732 numClassKey = mkPreludeClassUnique 11
733 ordClassKey = mkPreludeClassUnique 12
734 readClassKey = mkPreludeClassUnique 13
735 realClassKey = mkPreludeClassUnique 14
736 realFloatClassKey = mkPreludeClassUnique 15
737 realFracClassKey = mkPreludeClassUnique 16
738 showClassKey = mkPreludeClassUnique 17
740 cCallableClassKey = mkPreludeClassUnique 18
741 cReturnableClassKey = mkPreludeClassUnique 19
743 ixClassKey = mkPreludeClassUnique 20
746 %************************************************************************
748 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
750 %************************************************************************
753 addrPrimTyConKey = mkPreludeTyConUnique 1
754 addrTyConKey = mkPreludeTyConUnique 2
755 arrayPrimTyConKey = mkPreludeTyConUnique 3
756 boolTyConKey = mkPreludeTyConUnique 4
757 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
758 charPrimTyConKey = mkPreludeTyConUnique 7
759 charTyConKey = mkPreludeTyConUnique 8
760 doublePrimTyConKey = mkPreludeTyConUnique 9
761 doubleTyConKey = mkPreludeTyConUnique 10
762 floatPrimTyConKey = mkPreludeTyConUnique 11
763 floatTyConKey = mkPreludeTyConUnique 12
764 funTyConKey = mkPreludeTyConUnique 13
765 intPrimTyConKey = mkPreludeTyConUnique 14
766 intTyConKey = mkPreludeTyConUnique 15
767 int8TyConKey = mkPreludeTyConUnique 16
768 int16TyConKey = mkPreludeTyConUnique 17
769 int32PrimTyConKey = mkPreludeTyConUnique 18
770 int32TyConKey = mkPreludeTyConUnique 19
771 int64PrimTyConKey = mkPreludeTyConUnique 20
772 int64TyConKey = mkPreludeTyConUnique 21
773 integerTyConKey = mkPreludeTyConUnique 22
774 listTyConKey = mkPreludeTyConUnique 23
775 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
776 weakPrimTyConKey = mkPreludeTyConUnique 27
777 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
778 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
779 orderingTyConKey = mkPreludeTyConUnique 30
780 mVarPrimTyConKey = mkPreludeTyConUnique 31
781 ratioTyConKey = mkPreludeTyConUnique 32
782 rationalTyConKey = mkPreludeTyConUnique 33
783 realWorldTyConKey = mkPreludeTyConUnique 34
784 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
785 stablePtrTyConKey = mkPreludeTyConUnique 36
786 statePrimTyConKey = mkPreludeTyConUnique 50
787 stableNamePrimTyConKey = mkPreludeTyConUnique 51
788 stableNameTyConKey = mkPreludeTyConUnique 52
789 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
790 mutVarPrimTyConKey = mkPreludeTyConUnique 55
791 ioTyConKey = mkPreludeTyConUnique 56
792 byteArrayTyConKey = mkPreludeTyConUnique 57
793 wordPrimTyConKey = mkPreludeTyConUnique 58
794 wordTyConKey = mkPreludeTyConUnique 59
795 word8TyConKey = mkPreludeTyConUnique 60
796 word16TyConKey = mkPreludeTyConUnique 61
797 word32PrimTyConKey = mkPreludeTyConUnique 62
798 word32TyConKey = mkPreludeTyConUnique 63
799 word64PrimTyConKey = mkPreludeTyConUnique 64
800 word64TyConKey = mkPreludeTyConUnique 65
801 liftedConKey = mkPreludeTyConUnique 66
802 unliftedConKey = mkPreludeTyConUnique 67
803 anyBoxConKey = mkPreludeTyConUnique 68
804 kindConKey = mkPreludeTyConUnique 69
805 boxityConKey = mkPreludeTyConUnique 70
806 typeConKey = mkPreludeTyConUnique 71
807 threadIdPrimTyConKey = mkPreludeTyConUnique 72
808 bcoPrimTyConKey = mkPreludeTyConUnique 73
809 ptrTyConKey = mkPreludeTyConUnique 74
810 funPtrTyConKey = mkPreludeTyConUnique 75
812 -- Usage type constructors
813 usageConKey = mkPreludeTyConUnique 76
814 usOnceTyConKey = mkPreludeTyConUnique 77
815 usManyTyConKey = mkPreludeTyConUnique 78
817 -- Generic Type Constructors
818 crossTyConKey = mkPreludeTyConUnique 79
819 plusTyConKey = mkPreludeTyConUnique 80
820 genUnitTyConKey = mkPreludeTyConUnique 81
822 -- Parallel array type constructor
823 parrTyConKey = mkPreludeTyConUnique 82
825 ---------------- Template Haskell -------------------
826 -- USES TyConUniques 100-119
827 -----------------------------------------------------
829 unitTyConKey = mkTupleTyConUnique Boxed 0
832 %************************************************************************
834 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
836 %************************************************************************
839 addrDataConKey = mkPreludeDataConUnique 0
840 charDataConKey = mkPreludeDataConUnique 1
841 consDataConKey = mkPreludeDataConUnique 2
842 doubleDataConKey = mkPreludeDataConUnique 3
843 falseDataConKey = mkPreludeDataConUnique 4
844 floatDataConKey = mkPreludeDataConUnique 5
845 intDataConKey = mkPreludeDataConUnique 6
846 smallIntegerDataConKey = mkPreludeDataConUnique 7
847 largeIntegerDataConKey = mkPreludeDataConUnique 8
848 nilDataConKey = mkPreludeDataConUnique 11
849 ratioDataConKey = mkPreludeDataConUnique 12
850 stablePtrDataConKey = mkPreludeDataConUnique 13
851 stableNameDataConKey = mkPreludeDataConUnique 14
852 trueDataConKey = mkPreludeDataConUnique 15
853 wordDataConKey = mkPreludeDataConUnique 16
854 ioDataConKey = mkPreludeDataConUnique 17
855 ptrDataConKey = mkPreludeDataConUnique 18
856 funPtrDataConKey = mkPreludeDataConUnique 19
858 -- Generic data constructors
859 crossDataConKey = mkPreludeDataConUnique 20
860 inlDataConKey = mkPreludeDataConUnique 21
861 inrDataConKey = mkPreludeDataConUnique 22
862 genUnitDataConKey = mkPreludeDataConUnique 23
864 -- Data constructor for parallel arrays
865 parrDataConKey = mkPreludeDataConUnique 24
868 %************************************************************************
870 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
872 %************************************************************************
875 absentErrorIdKey = mkPreludeMiscIdUnique 1
876 getTagIdKey = mkPreludeMiscIdUnique 2
877 augmentIdKey = mkPreludeMiscIdUnique 3
878 appendIdKey = mkPreludeMiscIdUnique 4
879 buildIdKey = mkPreludeMiscIdUnique 5
880 errorIdKey = mkPreludeMiscIdUnique 6
881 foldlIdKey = mkPreludeMiscIdUnique 7
882 foldrIdKey = mkPreludeMiscIdUnique 8
883 recSelErrorIdKey = mkPreludeMiscIdUnique 9
884 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
885 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
886 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
887 integerZeroIdKey = mkPreludeMiscIdUnique 13
888 int2IntegerIdKey = mkPreludeMiscIdUnique 14
889 seqIdKey = mkPreludeMiscIdUnique 15
890 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
891 eqStringIdKey = mkPreludeMiscIdUnique 17
892 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
893 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
894 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
895 parErrorIdKey = mkPreludeMiscIdUnique 21
896 parIdKey = mkPreludeMiscIdUnique 22
897 patErrorIdKey = mkPreludeMiscIdUnique 23
898 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
899 recConErrorIdKey = mkPreludeMiscIdUnique 25
900 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
901 traceIdKey = mkPreludeMiscIdUnique 27
902 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
903 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
904 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
905 unpackCStringIdKey = mkPreludeMiscIdUnique 31
907 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
908 concatIdKey = mkPreludeMiscIdUnique 33
909 filterIdKey = mkPreludeMiscIdUnique 34
910 zipIdKey = mkPreludeMiscIdUnique 35
911 bindIOIdKey = mkPreludeMiscIdUnique 36
912 returnIOIdKey = mkPreludeMiscIdUnique 37
913 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
914 newStablePtrIdKey = mkPreludeMiscIdUnique 39
915 plusIntegerIdKey = mkPreludeMiscIdUnique 41
916 timesIntegerIdKey = mkPreludeMiscIdUnique 42
917 printIdKey = mkPreludeMiscIdUnique 43
918 failIOIdKey = mkPreludeMiscIdUnique 44
919 nullAddrIdKey = mkPreludeMiscIdUnique 46
920 voidArgIdKey = mkPreludeMiscIdUnique 47
921 splitIdKey = mkPreludeMiscIdUnique 48
922 fstIdKey = mkPreludeMiscIdUnique 49
923 sndIdKey = mkPreludeMiscIdUnique 50
924 otherwiseIdKey = mkPreludeMiscIdUnique 51
925 assertIdKey = mkPreludeMiscIdUnique 53
926 runSTRepIdKey = mkPreludeMiscIdUnique 54
928 dollarMainKey = mkPreludeMiscIdUnique 55
929 runMainKey = mkPreludeMiscIdUnique 56
931 andIdKey = mkPreludeMiscIdUnique 57
932 orIdKey = mkPreludeMiscIdUnique 58
933 thenIOIdKey = mkPreludeMiscIdUnique 59
934 lazyIdKey = mkPreludeMiscIdUnique 60
935 assertErrorIdKey = mkPreludeMiscIdUnique 61
937 -- Parallel array functions
938 nullPIdKey = mkPreludeMiscIdUnique 80
939 lengthPIdKey = mkPreludeMiscIdUnique 81
940 replicatePIdKey = mkPreludeMiscIdUnique 82
941 mapPIdKey = mkPreludeMiscIdUnique 83
942 filterPIdKey = mkPreludeMiscIdUnique 84
943 zipPIdKey = mkPreludeMiscIdUnique 85
944 crossPIdKey = mkPreludeMiscIdUnique 86
945 indexPIdKey = mkPreludeMiscIdUnique 87
946 toPIdKey = mkPreludeMiscIdUnique 88
947 enumFromToPIdKey = mkPreludeMiscIdUnique 89
948 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
949 bpermutePIdKey = mkPreludeMiscIdUnique 91
950 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
951 indexOfPIdKey = mkPreludeMiscIdUnique 93
954 Certain class operations from Prelude classes. They get their own
955 uniques so we can look them up easily when we want to conjure them up
956 during type checking.
959 -- Just a place holder for unbound variables produced by the renamer:
960 unboundKey = mkPreludeMiscIdUnique 101
962 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
963 minusClassOpKey = mkPreludeMiscIdUnique 103
964 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
965 enumFromClassOpKey = mkPreludeMiscIdUnique 105
966 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
967 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
968 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
969 eqClassOpKey = mkPreludeMiscIdUnique 109
970 geClassOpKey = mkPreludeMiscIdUnique 110
971 negateClassOpKey = mkPreludeMiscIdUnique 111
972 failMClassOpKey = mkPreludeMiscIdUnique 112
973 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
974 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
975 returnMClassOpKey = mkPreludeMiscIdUnique 117
977 -- Recursive do notation
978 mfixIdKey = mkPreludeMiscIdUnique 118
980 ---------------- Template Haskell -------------------
981 -- USES IdUniques 200-299
982 -----------------------------------------------------
986 %************************************************************************
988 \subsection{Standard groups of types}
990 %************************************************************************
1002 -- Renamer always imports these data decls replete with constructors
1003 -- so that desugarer can always see their constructors. Ugh!
1008 , mutableByteArrayTyConKey
1022 %************************************************************************
1024 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1026 %************************************************************************
1028 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1029 even though every numeric class has these two as a superclass,
1030 because the list of ambiguous dictionaries hasn't been simplified.
1038 ++ fractionalClassKeys
1040 fractionalClassKeys =
1041 [ fractionalClassKey
1047 -- the strictness analyser needs to know about numeric types
1048 -- (see SaAbsInt.lhs)
1049 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1055 , cReturnableClassKey
1059 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1061 -- We have to have "CCallable" and "CReturnable" in the standard
1062 -- classes, so that if you go...
1064 -- _ccall_ foo ... 93{-numeric literal-} ...
1066 -- ... it can do The Right Thing on the 93.
1068 noDictClassKeys -- These classes are used only for type annotations;
1069 -- they are not implemented by dictionaries, ever.
1073 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1078 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1079 boundedClassKey, showClassKey, readClassKey ]