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 superKindName = kindQual FSLIT("KX") kindConKey
444 superBoxityName = kindQual FSLIT("BX") boxityConKey
445 liftedConName = kindQual FSLIT("*") liftedConKey
446 unliftedConName = kindQual FSLIT("#") unliftedConKey
447 openKindConName = kindQual FSLIT("?") anyBoxConKey
448 typeConName = kindQual FSLIT("Type") typeConKey
450 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
451 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
452 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
453 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
454 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
455 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
456 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
457 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
458 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
459 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
460 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
461 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
462 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
463 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
464 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
465 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
466 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
467 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
468 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
469 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
470 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
471 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
472 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
473 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
474 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
475 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
476 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
478 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
479 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
480 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
481 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
483 -- PrelBase data types and constructors
484 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
485 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
486 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
487 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
488 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
489 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
490 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
491 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
492 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
493 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
494 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
495 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
496 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
499 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
500 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
501 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
502 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
503 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
504 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
505 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
507 -- Base strings Strings
508 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
509 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
510 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
511 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
512 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
514 -- Base classes (Eq, Ord, Functor)
515 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
516 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
517 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
520 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
521 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
522 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
523 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
524 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
527 -- Random PrelBase functions
528 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
529 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
530 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
531 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
532 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
533 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
534 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
535 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
536 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
539 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
540 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
543 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
544 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
545 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
546 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
547 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
548 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
549 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
550 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
551 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
553 -- PrelReal types and classes
554 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
555 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
556 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
557 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
558 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
559 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
560 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
561 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
564 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
565 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
566 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
567 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
568 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
569 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
572 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
574 -- Enum module (Enum, Bounded)
575 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
576 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
577 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
578 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
579 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
580 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
583 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
584 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
585 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
588 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
591 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
593 -- parallel array types and functions
594 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
595 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
596 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
597 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
598 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
599 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
600 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
601 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
602 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
603 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
604 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
605 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
606 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
607 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
608 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
609 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
612 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
613 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
614 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
615 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
616 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
617 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
620 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
622 -- Int, Word, and Addr things
623 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
624 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
625 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
626 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
629 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
630 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
631 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
632 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
633 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
634 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
637 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
638 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
641 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
642 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
643 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
644 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
647 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
648 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
650 -- Foreign objects and weak pointers
651 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
652 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
653 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
656 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
657 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
658 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
659 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
660 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
661 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
662 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
663 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
664 nonExhaustiveGuardsErrorName
665 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
668 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
670 -- The "split" Id for splittable implicit parameters
671 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
673 -- Recursive-do notation
674 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
677 %************************************************************************
679 \subsection{Local helpers}
681 %************************************************************************
683 All these are original names; hence mkOrig
686 varQual = mk_known_key_name varName
687 dataQual = mk_known_key_name dataName -- All the constructor names here are for the DataCon
688 -- itself, which lives in the VarName name space
689 tcQual = mk_known_key_name tcName
690 clsQual = mk_known_key_name clsName
692 wVarQual = mk_wired_in_name varName -- The wired-in analogues
693 wDataQual = mk_wired_in_name dataName
694 wTcQual = mk_wired_in_name tcName
696 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- The RDR analogues
697 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
698 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
699 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
701 mk_known_key_name space mod str uniq
702 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
703 mk_wired_in_name space mod str uniq
704 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
706 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
707 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
708 -- And they don't come from any particular module; indeed we always
709 -- want to print them unqualified. Hence the LocalName
712 %************************************************************************
714 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
716 %************************************************************************
717 --MetaHaskell extension hand allocate keys here
720 boundedClassKey = mkPreludeClassUnique 1
721 enumClassKey = mkPreludeClassUnique 2
722 eqClassKey = mkPreludeClassUnique 3
723 floatingClassKey = mkPreludeClassUnique 5
724 fractionalClassKey = mkPreludeClassUnique 6
725 integralClassKey = mkPreludeClassUnique 7
726 monadClassKey = mkPreludeClassUnique 8
727 functorClassKey = mkPreludeClassUnique 10
728 numClassKey = mkPreludeClassUnique 11
729 ordClassKey = mkPreludeClassUnique 12
730 readClassKey = mkPreludeClassUnique 13
731 realClassKey = mkPreludeClassUnique 14
732 realFloatClassKey = mkPreludeClassUnique 15
733 realFracClassKey = mkPreludeClassUnique 16
734 showClassKey = mkPreludeClassUnique 17
736 cCallableClassKey = mkPreludeClassUnique 18
737 cReturnableClassKey = mkPreludeClassUnique 19
739 ixClassKey = mkPreludeClassUnique 20
742 %************************************************************************
744 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
746 %************************************************************************
749 addrPrimTyConKey = mkPreludeTyConUnique 1
750 addrTyConKey = mkPreludeTyConUnique 2
751 arrayPrimTyConKey = mkPreludeTyConUnique 3
752 boolTyConKey = mkPreludeTyConUnique 4
753 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
754 charPrimTyConKey = mkPreludeTyConUnique 7
755 charTyConKey = mkPreludeTyConUnique 8
756 doublePrimTyConKey = mkPreludeTyConUnique 9
757 doubleTyConKey = mkPreludeTyConUnique 10
758 floatPrimTyConKey = mkPreludeTyConUnique 11
759 floatTyConKey = mkPreludeTyConUnique 12
760 funTyConKey = mkPreludeTyConUnique 13
761 intPrimTyConKey = mkPreludeTyConUnique 14
762 intTyConKey = mkPreludeTyConUnique 15
763 int8TyConKey = mkPreludeTyConUnique 16
764 int16TyConKey = mkPreludeTyConUnique 17
765 int32PrimTyConKey = mkPreludeTyConUnique 18
766 int32TyConKey = mkPreludeTyConUnique 19
767 int64PrimTyConKey = mkPreludeTyConUnique 20
768 int64TyConKey = mkPreludeTyConUnique 21
769 integerTyConKey = mkPreludeTyConUnique 22
770 listTyConKey = mkPreludeTyConUnique 23
771 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
772 weakPrimTyConKey = mkPreludeTyConUnique 27
773 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
774 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
775 orderingTyConKey = mkPreludeTyConUnique 30
776 mVarPrimTyConKey = mkPreludeTyConUnique 31
777 ratioTyConKey = mkPreludeTyConUnique 32
778 rationalTyConKey = mkPreludeTyConUnique 33
779 realWorldTyConKey = mkPreludeTyConUnique 34
780 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
781 stablePtrTyConKey = mkPreludeTyConUnique 36
782 statePrimTyConKey = mkPreludeTyConUnique 50
783 stableNamePrimTyConKey = mkPreludeTyConUnique 51
784 stableNameTyConKey = mkPreludeTyConUnique 52
785 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
786 mutVarPrimTyConKey = mkPreludeTyConUnique 55
787 ioTyConKey = mkPreludeTyConUnique 56
788 byteArrayTyConKey = mkPreludeTyConUnique 57
789 wordPrimTyConKey = mkPreludeTyConUnique 58
790 wordTyConKey = mkPreludeTyConUnique 59
791 word8TyConKey = mkPreludeTyConUnique 60
792 word16TyConKey = mkPreludeTyConUnique 61
793 word32PrimTyConKey = mkPreludeTyConUnique 62
794 word32TyConKey = mkPreludeTyConUnique 63
795 word64PrimTyConKey = mkPreludeTyConUnique 64
796 word64TyConKey = mkPreludeTyConUnique 65
797 liftedConKey = mkPreludeTyConUnique 66
798 unliftedConKey = mkPreludeTyConUnique 67
799 anyBoxConKey = mkPreludeTyConUnique 68
800 kindConKey = mkPreludeTyConUnique 69
801 boxityConKey = mkPreludeTyConUnique 70
802 typeConKey = mkPreludeTyConUnique 71
803 threadIdPrimTyConKey = mkPreludeTyConUnique 72
804 bcoPrimTyConKey = mkPreludeTyConUnique 73
805 ptrTyConKey = mkPreludeTyConUnique 74
806 funPtrTyConKey = mkPreludeTyConUnique 75
808 -- Generic Type Constructors
809 crossTyConKey = mkPreludeTyConUnique 79
810 plusTyConKey = mkPreludeTyConUnique 80
811 genUnitTyConKey = mkPreludeTyConUnique 81
813 -- Parallel array type constructor
814 parrTyConKey = mkPreludeTyConUnique 82
816 ---------------- Template Haskell -------------------
817 -- USES TyConUniques 100-119
818 -----------------------------------------------------
820 unitTyConKey = mkTupleTyConUnique Boxed 0
823 %************************************************************************
825 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
827 %************************************************************************
830 addrDataConKey = mkPreludeDataConUnique 0
831 charDataConKey = mkPreludeDataConUnique 1
832 consDataConKey = mkPreludeDataConUnique 2
833 doubleDataConKey = mkPreludeDataConUnique 3
834 falseDataConKey = mkPreludeDataConUnique 4
835 floatDataConKey = mkPreludeDataConUnique 5
836 intDataConKey = mkPreludeDataConUnique 6
837 smallIntegerDataConKey = mkPreludeDataConUnique 7
838 largeIntegerDataConKey = mkPreludeDataConUnique 8
839 nilDataConKey = mkPreludeDataConUnique 11
840 ratioDataConKey = mkPreludeDataConUnique 12
841 stablePtrDataConKey = mkPreludeDataConUnique 13
842 stableNameDataConKey = mkPreludeDataConUnique 14
843 trueDataConKey = mkPreludeDataConUnique 15
844 wordDataConKey = mkPreludeDataConUnique 16
845 ioDataConKey = mkPreludeDataConUnique 17
846 ptrDataConKey = mkPreludeDataConUnique 18
847 funPtrDataConKey = mkPreludeDataConUnique 19
849 -- Generic data constructors
850 crossDataConKey = mkPreludeDataConUnique 20
851 inlDataConKey = mkPreludeDataConUnique 21
852 inrDataConKey = mkPreludeDataConUnique 22
853 genUnitDataConKey = mkPreludeDataConUnique 23
855 -- Data constructor for parallel arrays
856 parrDataConKey = mkPreludeDataConUnique 24
859 %************************************************************************
861 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
863 %************************************************************************
866 absentErrorIdKey = mkPreludeMiscIdUnique 1
867 augmentIdKey = mkPreludeMiscIdUnique 3
868 appendIdKey = mkPreludeMiscIdUnique 4
869 buildIdKey = mkPreludeMiscIdUnique 5
870 errorIdKey = mkPreludeMiscIdUnique 6
871 foldlIdKey = mkPreludeMiscIdUnique 7
872 foldrIdKey = mkPreludeMiscIdUnique 8
873 recSelErrorIdKey = mkPreludeMiscIdUnique 9
874 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
875 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
876 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
877 integerZeroIdKey = mkPreludeMiscIdUnique 13
878 int2IntegerIdKey = mkPreludeMiscIdUnique 14
879 seqIdKey = mkPreludeMiscIdUnique 15
880 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
881 eqStringIdKey = mkPreludeMiscIdUnique 17
882 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
883 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
884 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
885 parErrorIdKey = mkPreludeMiscIdUnique 21
886 parIdKey = mkPreludeMiscIdUnique 22
887 patErrorIdKey = mkPreludeMiscIdUnique 23
888 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
889 recConErrorIdKey = mkPreludeMiscIdUnique 25
890 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
891 traceIdKey = mkPreludeMiscIdUnique 27
892 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
893 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
894 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
895 unpackCStringIdKey = mkPreludeMiscIdUnique 31
897 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
898 concatIdKey = mkPreludeMiscIdUnique 33
899 filterIdKey = mkPreludeMiscIdUnique 34
900 zipIdKey = mkPreludeMiscIdUnique 35
901 bindIOIdKey = mkPreludeMiscIdUnique 36
902 returnIOIdKey = mkPreludeMiscIdUnique 37
903 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
904 newStablePtrIdKey = mkPreludeMiscIdUnique 39
905 plusIntegerIdKey = mkPreludeMiscIdUnique 41
906 timesIntegerIdKey = mkPreludeMiscIdUnique 42
907 printIdKey = mkPreludeMiscIdUnique 43
908 failIOIdKey = mkPreludeMiscIdUnique 44
909 nullAddrIdKey = mkPreludeMiscIdUnique 46
910 voidArgIdKey = mkPreludeMiscIdUnique 47
911 splitIdKey = mkPreludeMiscIdUnique 48
912 fstIdKey = mkPreludeMiscIdUnique 49
913 sndIdKey = mkPreludeMiscIdUnique 50
914 otherwiseIdKey = mkPreludeMiscIdUnique 51
915 assertIdKey = mkPreludeMiscIdUnique 53
916 runSTRepIdKey = mkPreludeMiscIdUnique 54
918 dollarMainKey = mkPreludeMiscIdUnique 55
919 runMainKey = mkPreludeMiscIdUnique 56
921 andIdKey = mkPreludeMiscIdUnique 57
922 orIdKey = mkPreludeMiscIdUnique 58
923 thenIOIdKey = mkPreludeMiscIdUnique 59
924 lazyIdKey = mkPreludeMiscIdUnique 60
925 assertErrorIdKey = mkPreludeMiscIdUnique 61
927 -- Parallel array functions
928 nullPIdKey = mkPreludeMiscIdUnique 80
929 lengthPIdKey = mkPreludeMiscIdUnique 81
930 replicatePIdKey = mkPreludeMiscIdUnique 82
931 mapPIdKey = mkPreludeMiscIdUnique 83
932 filterPIdKey = mkPreludeMiscIdUnique 84
933 zipPIdKey = mkPreludeMiscIdUnique 85
934 crossPIdKey = mkPreludeMiscIdUnique 86
935 indexPIdKey = mkPreludeMiscIdUnique 87
936 toPIdKey = mkPreludeMiscIdUnique 88
937 enumFromToPIdKey = mkPreludeMiscIdUnique 89
938 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
939 bpermutePIdKey = mkPreludeMiscIdUnique 91
940 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
941 indexOfPIdKey = mkPreludeMiscIdUnique 93
944 Certain class operations from Prelude classes. They get their own
945 uniques so we can look them up easily when we want to conjure them up
946 during type checking.
949 -- Just a place holder for unbound variables produced by the renamer:
950 unboundKey = mkPreludeMiscIdUnique 101
952 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
953 minusClassOpKey = mkPreludeMiscIdUnique 103
954 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
955 enumFromClassOpKey = mkPreludeMiscIdUnique 105
956 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
957 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
958 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
959 eqClassOpKey = mkPreludeMiscIdUnique 109
960 geClassOpKey = mkPreludeMiscIdUnique 110
961 negateClassOpKey = mkPreludeMiscIdUnique 111
962 failMClassOpKey = mkPreludeMiscIdUnique 112
963 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
964 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
965 returnMClassOpKey = mkPreludeMiscIdUnique 117
967 -- Recursive do notation
968 mfixIdKey = mkPreludeMiscIdUnique 118
970 ---------------- Template Haskell -------------------
971 -- USES IdUniques 200-299
972 -----------------------------------------------------
976 %************************************************************************
978 \subsection{Standard groups of types}
980 %************************************************************************
992 -- Renamer always imports these data decls replete with constructors
993 -- so that desugarer can always see their constructors. Ugh!
998 , mutableByteArrayTyConKey
1012 %************************************************************************
1014 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1016 %************************************************************************
1018 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1019 even though every numeric class has these two as a superclass,
1020 because the list of ambiguous dictionaries hasn't been simplified.
1028 ++ fractionalClassKeys
1030 fractionalClassKeys =
1031 [ fractionalClassKey
1037 -- the strictness analyser needs to know about numeric types
1038 -- (see SaAbsInt.lhs)
1039 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1045 , cReturnableClassKey
1049 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1051 -- We have to have "CCallable" and "CReturnable" in the standard
1052 -- classes, so that if you go...
1054 -- _ccall_ foo ... 93{-numeric literal-} ...
1056 -- ... it can do The Right Thing on the 93.
1058 noDictClassKeys -- These classes are used only for type annotations;
1059 -- they are not implemented by dictionaries, ever.
1063 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1068 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1069 boundedClassKey, showClassKey, readClassKey ]