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 -- So many that we export them all
47 -----------------------------------------------------------
49 mkTupNameStr, isBuiltInSyntaxName,
51 ------------------------------------------------------------
52 -- Goups of classes and types
53 needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
54 fractionalClassKeys, numericClassKeys, standardClassKeys,
55 derivableClassKeys, -- things are needed as a result of a
57 numericTyKeys, cCallishTyKeys,
59 mkUnboundName, isUnboundName
62 #include "HsVersions.h"
64 import Module ( ModuleName, mkBasePkgModule, mkHomeModule, mkModuleName )
65 import OccName ( UserFS, dataName, tcName, clsName, varName,
69 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
70 import Unique ( Unique, Uniquable(..), hasKey,
71 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
72 mkPreludeTyConUnique, mkPreludeClassUnique,
73 mkTupleTyConUnique, isTupleKey
75 import BasicTypes ( Boxity(..) )
76 import Name ( Name, mkInternalName, mkKnownKeyExternalName, mkWiredInName, nameUnique )
77 import SrcLoc ( noSrcLoc )
78 import Util ( nOfThem )
79 import Panic ( panic )
86 %************************************************************************
88 \subsection{Local Names}
90 %************************************************************************
92 This *local* name is used by the interactive stuff
95 itName uniq = mkInternalName uniq (mkOccFS varName FSLIT("it")) noSrcLoc
99 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
100 -- during compiler debugging.
101 mkUnboundName :: RdrName -> Name
102 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
104 isUnboundName :: Name -> Bool
105 isUnboundName name = name `hasKey` unboundKey
109 %************************************************************************
111 \subsection{Built-in-syntax names
113 %************************************************************************
115 Built-in syntax names are parsed directly into Exact RdrNames.
116 This predicate just identifies them.
119 isBuiltInSyntaxName :: Name -> Bool
120 isBuiltInSyntaxName n
122 || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
123 funTyConKey, parrTyConKey]
128 %************************************************************************
130 \subsection{Known key Names}
132 %************************************************************************
134 This section tells what the compiler knows about the assocation of
135 names with uniques. These ones are the *non* wired-in ones. The
136 wired in ones are defined in TysWiredIn etc.
139 basicKnownKeyNames :: [Name]
141 = [ -- Type constructors (synonyms especially)
142 ioTyConName, ioDataConName,
149 mutableByteArrayTyConName,
152 stablePtrDataConName,
154 -- Classes. *Must* include:
155 -- classes that are grabbed by key (e.g., eqClassKey)
156 -- classes in "Class.standardClassKeys" (quite a few)
157 eqClassName, -- mentioned, derivable
158 ordClassName, -- derivable
159 boundedClassName, -- derivable
160 numClassName, -- mentioned, numeric
161 enumClassName, -- derivable
164 realClassName, -- numeric
165 integralClassName, -- numeric
166 fractionalClassName, -- numeric
167 floatingClassName, -- numeric
168 realFracClassName, -- numeric
169 realFloatClassName, -- numeric
170 cCallableClassName, -- mentioned, ccallish
171 cReturnableClassName, -- mentioned, ccallish
174 negateName, minusName,
175 fromRationalName, fromIntegerName,
179 enumFromName, enumFromThenName,
180 enumFromThenToName, enumFromToName,
181 enumFromToPName, enumFromThenToPName,
184 thenMName, bindMName, returnMName, failMName,
185 thenIOName, bindIOName, returnIOName, failIOName,
203 unpackCStringName, unpackCStringAppendName,
204 unpackCStringFoldrName, unpackCStringUtf8Name,
207 concatName, filterName,
208 zipName, foldrName, buildName, augmentName, appendName,
210 -- Parallel array operations
211 nullPName, lengthPName, replicatePName, mapPName,
212 filterPName, zipPName, crossPName, indexPName,
213 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
215 -- FFI primitive types that are not wired-in.
216 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
217 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
220 unsafeCoerceName, otherwiseIdName,
221 plusIntegerName, timesIntegerName,
222 eqStringName, assertName, assertErrorName, runSTRepName,
223 printName, splitName, fstName, sndName,
230 monadNames :: [Name] -- The monad ops need by a HsDo
231 monadNames = [returnMName, failMName, bindMName, thenMName]
235 %************************************************************************
237 \subsection{Module names}
239 %************************************************************************
242 --MetaHaskell Extension Add a new module here
244 pRELUDE_Name = mkModuleName "Prelude"
245 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
246 pREL_BASE_Name = mkModuleName "GHC.Base"
247 pREL_ENUM_Name = mkModuleName "GHC.Enum"
248 pREL_SHOW_Name = mkModuleName "GHC.Show"
249 pREL_READ_Name = mkModuleName "GHC.Read"
250 pREL_NUM_Name = mkModuleName "GHC.Num"
251 pREL_LIST_Name = mkModuleName "GHC.List"
252 pREL_PARR_Name = mkModuleName "GHC.PArr"
253 pREL_TUP_Name = mkModuleName "Data.Tuple"
254 pREL_PACK_Name = mkModuleName "GHC.Pack"
255 pREL_CONC_Name = mkModuleName "GHC.Conc"
256 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
257 pREL_ST_Name = mkModuleName "GHC.ST"
258 pREL_ARR_Name = mkModuleName "GHC.Arr"
259 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
260 pREL_STABLE_Name = mkModuleName "GHC.Stable"
261 pREL_ADDR_Name = mkModuleName "GHC.Addr"
262 pREL_PTR_Name = mkModuleName "GHC.Ptr"
263 pREL_ERR_Name = mkModuleName "GHC.Err"
264 pREL_REAL_Name = mkModuleName "GHC.Real"
265 pREL_FLOAT_Name = mkModuleName "GHC.Float"
266 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
267 sYSTEM_IO_Name = mkModuleName "System.IO"
269 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
270 lEX_Name = mkModuleName "Text.Read.Lex"
272 mAIN_Name = mkModuleName "Main"
273 pREL_INT_Name = mkModuleName "GHC.Int"
274 pREL_WORD_Name = mkModuleName "GHC.Word"
275 mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
276 aDDR_Name = mkModuleName "Addr"
278 gLA_EXTS_Name = mkModuleName "GHC.Exts"
280 gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
281 pREL_BASE = mkBasePkgModule pREL_BASE_Name
282 pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
283 pREL_PTR = mkBasePkgModule pREL_PTR_Name
284 pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
285 pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
286 pREL_PACK = mkBasePkgModule pREL_PACK_Name
287 pREL_ERR = mkBasePkgModule pREL_ERR_Name
288 pREL_NUM = mkBasePkgModule pREL_NUM_Name
289 pREL_REAL = mkBasePkgModule pREL_REAL_Name
290 pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
291 pRELUDE = mkBasePkgModule pRELUDE_Name
294 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
296 -- MetaHaskell Extension text2 from Meta/work/gen.hs
297 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
301 %************************************************************************
303 \subsection{Constructing the names of tuples
305 %************************************************************************
308 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
310 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
311 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
312 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
313 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
314 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
315 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
317 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
318 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
319 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
320 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
321 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
322 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
326 %************************************************************************
330 %************************************************************************
333 getTag_RDR = nameRdrName getTagName
335 eq_RDR = nameRdrName eqName
336 ge_RDR = nameRdrName geName
337 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
338 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
339 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
340 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
341 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
342 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
343 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
345 eqClass_RDR = nameRdrName eqClassName
346 numClass_RDR = nameRdrName numClassName
347 ordClass_RDR = nameRdrName ordClassName
348 enumClass_RDR = nameRdrName enumClassName
349 monadClass_RDR = nameRdrName monadClassName
350 cCallableClass_RDR = nameRdrName cCallableClassName
351 cReturnableClass_RDR = nameRdrName cReturnableClassName
353 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
354 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
356 foldr_RDR = nameRdrName foldrName
357 build_RDR = nameRdrName buildName
358 returnM_RDR = nameRdrName returnMName
359 bindM_RDR = nameRdrName bindMName
360 failM_RDR = nameRdrName failMName
362 false_RDR = nameRdrName falseDataConName
363 true_RDR = nameRdrName trueDataConName
364 and_RDR = nameRdrName andName
366 error_RDR = nameRdrName errorName
368 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
369 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
370 mkInt_RDR = nameRdrName intDataConName
372 enumFrom_RDR = nameRdrName enumFromName
373 enumFromTo_RDR = nameRdrName enumFromToName
374 enumFromThen_RDR = nameRdrName enumFromThenName
375 enumFromThenTo_RDR = nameRdrName enumFromThenToName
377 ratioDataCon_RDR = nameRdrName ratioDataConName
378 plusInteger_RDR = nameRdrName plusIntegerName
379 timesInteger_RDR = nameRdrName timesIntegerName
381 ioDataCon_RDR = nameRdrName ioDataConName
383 eqString_RDR = nameRdrName eqStringName
384 unpackCString_RDR = nameRdrName unpackCStringName
385 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
386 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
388 newStablePtr_RDR = nameRdrName newStablePtrName
390 bindIO_RDR = nameRdrName bindIOName
391 returnIO_RDR = nameRdrName returnIOName
393 fromInteger_RDR = nameRdrName fromIntegerName
394 fromRational_RDR = nameRdrName fromRationalName
395 minus_RDR = nameRdrName minusName
396 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
397 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
399 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
401 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
402 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
403 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
404 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
405 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
406 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
407 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
408 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
410 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
411 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
412 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
413 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
414 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
415 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
416 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
417 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
419 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
420 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
421 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
423 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
424 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
425 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
426 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
428 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
429 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
430 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
431 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
432 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
433 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
437 %************************************************************************
439 \subsection{Known-key names}
441 %************************************************************************
443 Many of these Names are not really "built in", but some parts of the
444 compiler (notably the deriving mechanism) need to mention their names,
445 and it's convenient to write them all down in one place.
447 --MetaHaskell Extension add the constrs and the lower case case
448 -- guys as well (perhaps) e.g. see trueDataConName below
452 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
453 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
455 -- Stuff from GHC.Prim
456 usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
457 usManyTyConName = kindQual FSLIT("!") usManyTyConKey
458 superKindName = kindQual FSLIT("KX") kindConKey
459 superBoxityName = kindQual FSLIT("BX") boxityConKey
460 liftedConName = kindQual FSLIT("*") liftedConKey
461 unliftedConName = kindQual FSLIT("#") unliftedConKey
462 openKindConName = kindQual FSLIT("?") anyBoxConKey
463 usageKindConName = kindQual FSLIT("$") usageConKey
464 typeConName = kindQual FSLIT("Type") typeConKey
466 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
467 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
468 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
469 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
470 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
471 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
472 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
473 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
474 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
475 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
476 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
477 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
478 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
479 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
480 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
481 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
482 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
483 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
484 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
485 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
486 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
487 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
488 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
489 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
490 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
491 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
492 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
494 getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
495 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
496 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
497 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
498 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
500 -- PrelBase data types and constructors
501 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
502 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
503 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
504 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
505 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
506 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
507 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
508 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
509 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
510 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
511 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
512 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
513 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
516 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
517 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
518 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
519 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
520 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
521 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
522 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
524 -- Base strings Strings
525 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
526 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
527 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
528 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
529 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
531 -- Base classes (Eq, Ord, Functor)
532 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
533 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
534 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
537 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
538 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
539 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
540 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
541 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
544 -- Random PrelBase functions
545 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
546 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
547 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
548 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
549 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
550 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
551 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
552 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
553 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
556 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
557 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
560 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
561 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
562 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
563 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
564 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
565 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
566 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
567 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
568 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
570 -- PrelReal types and classes
571 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
572 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
573 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
574 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
575 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
576 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
577 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
578 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
581 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
582 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
583 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
584 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
585 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
586 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
589 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
591 -- Enum module (Enum, Bounded)
592 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
593 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
594 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
595 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
596 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
597 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
600 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
601 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
602 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
605 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
608 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
610 -- parallel array types and functions
611 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
612 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
613 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
614 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
615 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
616 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
617 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
618 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
619 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
620 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
621 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
622 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
623 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
624 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
625 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
626 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
629 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
630 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
631 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
632 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
633 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
634 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
637 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
639 -- Int, Word, and Addr things
640 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
641 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
642 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
643 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
646 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
647 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
648 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
649 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
650 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
651 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
654 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
655 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
658 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
659 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
660 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
661 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
664 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
665 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
667 -- Foreign objects and weak pointers
668 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
669 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
670 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
673 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
674 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
675 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
676 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
677 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
678 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
679 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
680 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
681 nonExhaustiveGuardsErrorName
682 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
685 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
687 -- The "split" Id for splittable implicit parameters
688 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
690 -- Recursive-do notation
691 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
694 %************************************************************************
696 \subsection{Local helpers}
698 %************************************************************************
700 All these are original names; hence mkOrig
703 varQual = mk_known_key_name varName
704 dataQual = mk_known_key_name dataName
705 tcQual = mk_known_key_name tcName
706 clsQual = mk_known_key_name clsName
708 wVarQual = mk_wired_in_name varName -- The wired-in analogues
709 wDataQual = mk_wired_in_name dataName
710 wTcQual = mk_wired_in_name tcName
712 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- note use of local alias vName
713 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
714 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
715 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
717 mk_known_key_name space mod str uniq
718 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
719 mk_wired_in_name space mod str uniq
720 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
722 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
723 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
724 -- And they don't come from any particular module; indeed we always
725 -- want to print them unqualified. Hence the LocalName
728 %************************************************************************
730 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
732 %************************************************************************
733 --MetaHaskell extension hand allocate keys here
736 boundedClassKey = mkPreludeClassUnique 1
737 enumClassKey = mkPreludeClassUnique 2
738 eqClassKey = mkPreludeClassUnique 3
739 floatingClassKey = mkPreludeClassUnique 5
740 fractionalClassKey = mkPreludeClassUnique 6
741 integralClassKey = mkPreludeClassUnique 7
742 monadClassKey = mkPreludeClassUnique 8
743 functorClassKey = mkPreludeClassUnique 10
744 numClassKey = mkPreludeClassUnique 11
745 ordClassKey = mkPreludeClassUnique 12
746 readClassKey = mkPreludeClassUnique 13
747 realClassKey = mkPreludeClassUnique 14
748 realFloatClassKey = mkPreludeClassUnique 15
749 realFracClassKey = mkPreludeClassUnique 16
750 showClassKey = mkPreludeClassUnique 17
752 cCallableClassKey = mkPreludeClassUnique 18
753 cReturnableClassKey = mkPreludeClassUnique 19
755 ixClassKey = mkPreludeClassUnique 20
758 %************************************************************************
760 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
762 %************************************************************************
765 addrPrimTyConKey = mkPreludeTyConUnique 1
766 addrTyConKey = mkPreludeTyConUnique 2
767 arrayPrimTyConKey = mkPreludeTyConUnique 3
768 boolTyConKey = mkPreludeTyConUnique 4
769 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
770 charPrimTyConKey = mkPreludeTyConUnique 7
771 charTyConKey = mkPreludeTyConUnique 8
772 doublePrimTyConKey = mkPreludeTyConUnique 9
773 doubleTyConKey = mkPreludeTyConUnique 10
774 floatPrimTyConKey = mkPreludeTyConUnique 11
775 floatTyConKey = mkPreludeTyConUnique 12
776 funTyConKey = mkPreludeTyConUnique 13
777 intPrimTyConKey = mkPreludeTyConUnique 14
778 intTyConKey = mkPreludeTyConUnique 15
779 int8TyConKey = mkPreludeTyConUnique 16
780 int16TyConKey = mkPreludeTyConUnique 17
781 int32PrimTyConKey = mkPreludeTyConUnique 18
782 int32TyConKey = mkPreludeTyConUnique 19
783 int64PrimTyConKey = mkPreludeTyConUnique 20
784 int64TyConKey = mkPreludeTyConUnique 21
785 integerTyConKey = mkPreludeTyConUnique 22
786 listTyConKey = mkPreludeTyConUnique 23
787 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
788 weakPrimTyConKey = mkPreludeTyConUnique 27
789 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
790 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
791 orderingTyConKey = mkPreludeTyConUnique 30
792 mVarPrimTyConKey = mkPreludeTyConUnique 31
793 ratioTyConKey = mkPreludeTyConUnique 32
794 rationalTyConKey = mkPreludeTyConUnique 33
795 realWorldTyConKey = mkPreludeTyConUnique 34
796 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
797 stablePtrTyConKey = mkPreludeTyConUnique 36
798 statePrimTyConKey = mkPreludeTyConUnique 50
799 stableNamePrimTyConKey = mkPreludeTyConUnique 51
800 stableNameTyConKey = mkPreludeTyConUnique 52
801 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
802 mutVarPrimTyConKey = mkPreludeTyConUnique 55
803 ioTyConKey = mkPreludeTyConUnique 56
804 byteArrayTyConKey = mkPreludeTyConUnique 57
805 wordPrimTyConKey = mkPreludeTyConUnique 58
806 wordTyConKey = mkPreludeTyConUnique 59
807 word8TyConKey = mkPreludeTyConUnique 60
808 word16TyConKey = mkPreludeTyConUnique 61
809 word32PrimTyConKey = mkPreludeTyConUnique 62
810 word32TyConKey = mkPreludeTyConUnique 63
811 word64PrimTyConKey = mkPreludeTyConUnique 64
812 word64TyConKey = mkPreludeTyConUnique 65
813 liftedConKey = mkPreludeTyConUnique 66
814 unliftedConKey = mkPreludeTyConUnique 67
815 anyBoxConKey = mkPreludeTyConUnique 68
816 kindConKey = mkPreludeTyConUnique 69
817 boxityConKey = mkPreludeTyConUnique 70
818 typeConKey = mkPreludeTyConUnique 71
819 threadIdPrimTyConKey = mkPreludeTyConUnique 72
820 bcoPrimTyConKey = mkPreludeTyConUnique 73
821 ptrTyConKey = mkPreludeTyConUnique 74
822 funPtrTyConKey = mkPreludeTyConUnique 75
824 -- Usage type constructors
825 usageConKey = mkPreludeTyConUnique 76
826 usOnceTyConKey = mkPreludeTyConUnique 77
827 usManyTyConKey = mkPreludeTyConUnique 78
829 -- Generic Type Constructors
830 crossTyConKey = mkPreludeTyConUnique 79
831 plusTyConKey = mkPreludeTyConUnique 80
832 genUnitTyConKey = mkPreludeTyConUnique 81
834 -- Parallel array type constructor
835 parrTyConKey = mkPreludeTyConUnique 82
837 ---------------- Template Haskell -------------------
838 -- USES TyConUniques 100-119
839 -----------------------------------------------------
841 unitTyConKey = mkTupleTyConUnique Boxed 0
844 %************************************************************************
846 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
848 %************************************************************************
851 addrDataConKey = mkPreludeDataConUnique 0
852 charDataConKey = mkPreludeDataConUnique 1
853 consDataConKey = mkPreludeDataConUnique 2
854 doubleDataConKey = mkPreludeDataConUnique 3
855 falseDataConKey = mkPreludeDataConUnique 4
856 floatDataConKey = mkPreludeDataConUnique 5
857 intDataConKey = mkPreludeDataConUnique 6
858 smallIntegerDataConKey = mkPreludeDataConUnique 7
859 largeIntegerDataConKey = mkPreludeDataConUnique 8
860 nilDataConKey = mkPreludeDataConUnique 11
861 ratioDataConKey = mkPreludeDataConUnique 12
862 stablePtrDataConKey = mkPreludeDataConUnique 13
863 stableNameDataConKey = mkPreludeDataConUnique 14
864 trueDataConKey = mkPreludeDataConUnique 15
865 wordDataConKey = mkPreludeDataConUnique 16
866 ioDataConKey = mkPreludeDataConUnique 17
867 ptrDataConKey = mkPreludeDataConUnique 18
868 funPtrDataConKey = mkPreludeDataConUnique 19
870 -- Generic data constructors
871 crossDataConKey = mkPreludeDataConUnique 20
872 inlDataConKey = mkPreludeDataConUnique 21
873 inrDataConKey = mkPreludeDataConUnique 22
874 genUnitDataConKey = mkPreludeDataConUnique 23
876 -- Data constructor for parallel arrays
877 parrDataConKey = mkPreludeDataConUnique 24
880 %************************************************************************
882 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
884 %************************************************************************
887 absentErrorIdKey = mkPreludeMiscIdUnique 1
888 getTagIdKey = mkPreludeMiscIdUnique 2
889 augmentIdKey = mkPreludeMiscIdUnique 3
890 appendIdKey = mkPreludeMiscIdUnique 4
891 buildIdKey = mkPreludeMiscIdUnique 5
892 errorIdKey = mkPreludeMiscIdUnique 6
893 foldlIdKey = mkPreludeMiscIdUnique 7
894 foldrIdKey = mkPreludeMiscIdUnique 8
895 recSelErrorIdKey = mkPreludeMiscIdUnique 9
896 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
897 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
898 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
899 integerZeroIdKey = mkPreludeMiscIdUnique 13
900 int2IntegerIdKey = mkPreludeMiscIdUnique 14
901 seqIdKey = mkPreludeMiscIdUnique 15
902 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
903 eqStringIdKey = mkPreludeMiscIdUnique 17
904 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
905 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
906 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
907 parErrorIdKey = mkPreludeMiscIdUnique 21
908 parIdKey = mkPreludeMiscIdUnique 22
909 patErrorIdKey = mkPreludeMiscIdUnique 23
910 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
911 recConErrorIdKey = mkPreludeMiscIdUnique 25
912 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
913 traceIdKey = mkPreludeMiscIdUnique 27
914 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
915 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
916 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
917 unpackCStringIdKey = mkPreludeMiscIdUnique 31
919 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
920 concatIdKey = mkPreludeMiscIdUnique 33
921 filterIdKey = mkPreludeMiscIdUnique 34
922 zipIdKey = mkPreludeMiscIdUnique 35
923 bindIOIdKey = mkPreludeMiscIdUnique 36
924 returnIOIdKey = mkPreludeMiscIdUnique 37
925 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
926 newStablePtrIdKey = mkPreludeMiscIdUnique 39
927 plusIntegerIdKey = mkPreludeMiscIdUnique 41
928 timesIntegerIdKey = mkPreludeMiscIdUnique 42
929 printIdKey = mkPreludeMiscIdUnique 43
930 failIOIdKey = mkPreludeMiscIdUnique 44
931 nullAddrIdKey = mkPreludeMiscIdUnique 46
932 voidArgIdKey = mkPreludeMiscIdUnique 47
933 splitIdKey = mkPreludeMiscIdUnique 48
934 fstIdKey = mkPreludeMiscIdUnique 49
935 sndIdKey = mkPreludeMiscIdUnique 50
936 otherwiseIdKey = mkPreludeMiscIdUnique 51
937 assertIdKey = mkPreludeMiscIdUnique 53
938 runSTRepIdKey = mkPreludeMiscIdUnique 54
940 dollarMainKey = mkPreludeMiscIdUnique 55
941 runMainKey = mkPreludeMiscIdUnique 56
943 andIdKey = mkPreludeMiscIdUnique 57
944 orIdKey = mkPreludeMiscIdUnique 58
945 thenIOIdKey = mkPreludeMiscIdUnique 59
946 lazyIdKey = mkPreludeMiscIdUnique 60
947 assertErrorIdKey = mkPreludeMiscIdUnique 61
949 -- Parallel array functions
950 nullPIdKey = mkPreludeMiscIdUnique 80
951 lengthPIdKey = mkPreludeMiscIdUnique 81
952 replicatePIdKey = mkPreludeMiscIdUnique 82
953 mapPIdKey = mkPreludeMiscIdUnique 83
954 filterPIdKey = mkPreludeMiscIdUnique 84
955 zipPIdKey = mkPreludeMiscIdUnique 85
956 crossPIdKey = mkPreludeMiscIdUnique 86
957 indexPIdKey = mkPreludeMiscIdUnique 87
958 toPIdKey = mkPreludeMiscIdUnique 88
959 enumFromToPIdKey = mkPreludeMiscIdUnique 89
960 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
961 bpermutePIdKey = mkPreludeMiscIdUnique 91
962 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
963 indexOfPIdKey = mkPreludeMiscIdUnique 93
966 Certain class operations from Prelude classes. They get their own
967 uniques so we can look them up easily when we want to conjure them up
968 during type checking.
971 -- Just a place holder for unbound variables produced by the renamer:
972 unboundKey = mkPreludeMiscIdUnique 101
974 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
975 minusClassOpKey = mkPreludeMiscIdUnique 103
976 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
977 enumFromClassOpKey = mkPreludeMiscIdUnique 105
978 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
979 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
980 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
981 eqClassOpKey = mkPreludeMiscIdUnique 109
982 geClassOpKey = mkPreludeMiscIdUnique 110
983 negateClassOpKey = mkPreludeMiscIdUnique 111
984 failMClassOpKey = mkPreludeMiscIdUnique 112
985 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
986 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
987 returnMClassOpKey = mkPreludeMiscIdUnique 117
989 -- Recursive do notation
990 mfixIdKey = mkPreludeMiscIdUnique 118
992 ---------------- Template Haskell -------------------
993 -- USES IdUniques 200-299
994 -----------------------------------------------------
998 %************************************************************************
1000 \subsection{Standard groups of types}
1002 %************************************************************************
1014 -- Renamer always imports these data decls replete with constructors
1015 -- so that desugarer can always see their constructors. Ugh!
1020 , mutableByteArrayTyConKey
1034 %************************************************************************
1036 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1038 %************************************************************************
1040 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1041 even though every numeric class has these two as a superclass,
1042 because the list of ambiguous dictionaries hasn't been simplified.
1050 ++ fractionalClassKeys
1052 fractionalClassKeys =
1053 [ fractionalClassKey
1059 -- the strictness analyser needs to know about numeric types
1060 -- (see SaAbsInt.lhs)
1061 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1067 , cReturnableClassKey
1071 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1073 -- We have to have "CCallable" and "CReturnable" in the standard
1074 -- classes, so that if you go...
1076 -- _ccall_ foo ... 93{-numeric literal-} ...
1078 -- ... it can do The Right Thing on the 93.
1080 noDictClassKeys -- These classes are used only for type annotations;
1081 -- they are not implemented by dictionaries, ever.
1085 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1090 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1091 boundedClassKey, showClassKey, readClassKey ]