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
688 tcQual = mk_known_key_name tcName
689 clsQual = mk_known_key_name clsName
691 wVarQual = mk_wired_in_name varName -- The wired-in analogues
692 wDataQual = mk_wired_in_name dataName
693 wTcQual = mk_wired_in_name tcName
695 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- note use of local alias vName
696 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
697 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
698 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
700 mk_known_key_name space mod str uniq
701 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
702 mk_wired_in_name space mod str uniq
703 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
705 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
706 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
707 -- And they don't come from any particular module; indeed we always
708 -- want to print them unqualified. Hence the LocalName
711 %************************************************************************
713 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
715 %************************************************************************
716 --MetaHaskell extension hand allocate keys here
719 boundedClassKey = mkPreludeClassUnique 1
720 enumClassKey = mkPreludeClassUnique 2
721 eqClassKey = mkPreludeClassUnique 3
722 floatingClassKey = mkPreludeClassUnique 5
723 fractionalClassKey = mkPreludeClassUnique 6
724 integralClassKey = mkPreludeClassUnique 7
725 monadClassKey = mkPreludeClassUnique 8
726 functorClassKey = mkPreludeClassUnique 10
727 numClassKey = mkPreludeClassUnique 11
728 ordClassKey = mkPreludeClassUnique 12
729 readClassKey = mkPreludeClassUnique 13
730 realClassKey = mkPreludeClassUnique 14
731 realFloatClassKey = mkPreludeClassUnique 15
732 realFracClassKey = mkPreludeClassUnique 16
733 showClassKey = mkPreludeClassUnique 17
735 cCallableClassKey = mkPreludeClassUnique 18
736 cReturnableClassKey = mkPreludeClassUnique 19
738 ixClassKey = mkPreludeClassUnique 20
741 %************************************************************************
743 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
745 %************************************************************************
748 addrPrimTyConKey = mkPreludeTyConUnique 1
749 addrTyConKey = mkPreludeTyConUnique 2
750 arrayPrimTyConKey = mkPreludeTyConUnique 3
751 boolTyConKey = mkPreludeTyConUnique 4
752 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
753 charPrimTyConKey = mkPreludeTyConUnique 7
754 charTyConKey = mkPreludeTyConUnique 8
755 doublePrimTyConKey = mkPreludeTyConUnique 9
756 doubleTyConKey = mkPreludeTyConUnique 10
757 floatPrimTyConKey = mkPreludeTyConUnique 11
758 floatTyConKey = mkPreludeTyConUnique 12
759 funTyConKey = mkPreludeTyConUnique 13
760 intPrimTyConKey = mkPreludeTyConUnique 14
761 intTyConKey = mkPreludeTyConUnique 15
762 int8TyConKey = mkPreludeTyConUnique 16
763 int16TyConKey = mkPreludeTyConUnique 17
764 int32PrimTyConKey = mkPreludeTyConUnique 18
765 int32TyConKey = mkPreludeTyConUnique 19
766 int64PrimTyConKey = mkPreludeTyConUnique 20
767 int64TyConKey = mkPreludeTyConUnique 21
768 integerTyConKey = mkPreludeTyConUnique 22
769 listTyConKey = mkPreludeTyConUnique 23
770 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
771 weakPrimTyConKey = mkPreludeTyConUnique 27
772 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
773 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
774 orderingTyConKey = mkPreludeTyConUnique 30
775 mVarPrimTyConKey = mkPreludeTyConUnique 31
776 ratioTyConKey = mkPreludeTyConUnique 32
777 rationalTyConKey = mkPreludeTyConUnique 33
778 realWorldTyConKey = mkPreludeTyConUnique 34
779 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
780 stablePtrTyConKey = mkPreludeTyConUnique 36
781 statePrimTyConKey = mkPreludeTyConUnique 50
782 stableNamePrimTyConKey = mkPreludeTyConUnique 51
783 stableNameTyConKey = mkPreludeTyConUnique 52
784 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
785 mutVarPrimTyConKey = mkPreludeTyConUnique 55
786 ioTyConKey = mkPreludeTyConUnique 56
787 byteArrayTyConKey = mkPreludeTyConUnique 57
788 wordPrimTyConKey = mkPreludeTyConUnique 58
789 wordTyConKey = mkPreludeTyConUnique 59
790 word8TyConKey = mkPreludeTyConUnique 60
791 word16TyConKey = mkPreludeTyConUnique 61
792 word32PrimTyConKey = mkPreludeTyConUnique 62
793 word32TyConKey = mkPreludeTyConUnique 63
794 word64PrimTyConKey = mkPreludeTyConUnique 64
795 word64TyConKey = mkPreludeTyConUnique 65
796 liftedConKey = mkPreludeTyConUnique 66
797 unliftedConKey = mkPreludeTyConUnique 67
798 anyBoxConKey = mkPreludeTyConUnique 68
799 kindConKey = mkPreludeTyConUnique 69
800 boxityConKey = mkPreludeTyConUnique 70
801 typeConKey = mkPreludeTyConUnique 71
802 threadIdPrimTyConKey = mkPreludeTyConUnique 72
803 bcoPrimTyConKey = mkPreludeTyConUnique 73
804 ptrTyConKey = mkPreludeTyConUnique 74
805 funPtrTyConKey = mkPreludeTyConUnique 75
807 -- Generic Type Constructors
808 crossTyConKey = mkPreludeTyConUnique 79
809 plusTyConKey = mkPreludeTyConUnique 80
810 genUnitTyConKey = mkPreludeTyConUnique 81
812 -- Parallel array type constructor
813 parrTyConKey = mkPreludeTyConUnique 82
815 ---------------- Template Haskell -------------------
816 -- USES TyConUniques 100-119
817 -----------------------------------------------------
819 unitTyConKey = mkTupleTyConUnique Boxed 0
822 %************************************************************************
824 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
826 %************************************************************************
829 addrDataConKey = mkPreludeDataConUnique 0
830 charDataConKey = mkPreludeDataConUnique 1
831 consDataConKey = mkPreludeDataConUnique 2
832 doubleDataConKey = mkPreludeDataConUnique 3
833 falseDataConKey = mkPreludeDataConUnique 4
834 floatDataConKey = mkPreludeDataConUnique 5
835 intDataConKey = mkPreludeDataConUnique 6
836 smallIntegerDataConKey = mkPreludeDataConUnique 7
837 largeIntegerDataConKey = mkPreludeDataConUnique 8
838 nilDataConKey = mkPreludeDataConUnique 11
839 ratioDataConKey = mkPreludeDataConUnique 12
840 stablePtrDataConKey = mkPreludeDataConUnique 13
841 stableNameDataConKey = mkPreludeDataConUnique 14
842 trueDataConKey = mkPreludeDataConUnique 15
843 wordDataConKey = mkPreludeDataConUnique 16
844 ioDataConKey = mkPreludeDataConUnique 17
845 ptrDataConKey = mkPreludeDataConUnique 18
846 funPtrDataConKey = mkPreludeDataConUnique 19
848 -- Generic data constructors
849 crossDataConKey = mkPreludeDataConUnique 20
850 inlDataConKey = mkPreludeDataConUnique 21
851 inrDataConKey = mkPreludeDataConUnique 22
852 genUnitDataConKey = mkPreludeDataConUnique 23
854 -- Data constructor for parallel arrays
855 parrDataConKey = mkPreludeDataConUnique 24
858 %************************************************************************
860 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
862 %************************************************************************
865 absentErrorIdKey = mkPreludeMiscIdUnique 1
866 augmentIdKey = mkPreludeMiscIdUnique 3
867 appendIdKey = mkPreludeMiscIdUnique 4
868 buildIdKey = mkPreludeMiscIdUnique 5
869 errorIdKey = mkPreludeMiscIdUnique 6
870 foldlIdKey = mkPreludeMiscIdUnique 7
871 foldrIdKey = mkPreludeMiscIdUnique 8
872 recSelErrorIdKey = mkPreludeMiscIdUnique 9
873 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
874 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
875 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
876 integerZeroIdKey = mkPreludeMiscIdUnique 13
877 int2IntegerIdKey = mkPreludeMiscIdUnique 14
878 seqIdKey = mkPreludeMiscIdUnique 15
879 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
880 eqStringIdKey = mkPreludeMiscIdUnique 17
881 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
882 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
883 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
884 parErrorIdKey = mkPreludeMiscIdUnique 21
885 parIdKey = mkPreludeMiscIdUnique 22
886 patErrorIdKey = mkPreludeMiscIdUnique 23
887 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
888 recConErrorIdKey = mkPreludeMiscIdUnique 25
889 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
890 traceIdKey = mkPreludeMiscIdUnique 27
891 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
892 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
893 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
894 unpackCStringIdKey = mkPreludeMiscIdUnique 31
896 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
897 concatIdKey = mkPreludeMiscIdUnique 33
898 filterIdKey = mkPreludeMiscIdUnique 34
899 zipIdKey = mkPreludeMiscIdUnique 35
900 bindIOIdKey = mkPreludeMiscIdUnique 36
901 returnIOIdKey = mkPreludeMiscIdUnique 37
902 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
903 newStablePtrIdKey = mkPreludeMiscIdUnique 39
904 plusIntegerIdKey = mkPreludeMiscIdUnique 41
905 timesIntegerIdKey = mkPreludeMiscIdUnique 42
906 printIdKey = mkPreludeMiscIdUnique 43
907 failIOIdKey = mkPreludeMiscIdUnique 44
908 nullAddrIdKey = mkPreludeMiscIdUnique 46
909 voidArgIdKey = mkPreludeMiscIdUnique 47
910 splitIdKey = mkPreludeMiscIdUnique 48
911 fstIdKey = mkPreludeMiscIdUnique 49
912 sndIdKey = mkPreludeMiscIdUnique 50
913 otherwiseIdKey = mkPreludeMiscIdUnique 51
914 assertIdKey = mkPreludeMiscIdUnique 53
915 runSTRepIdKey = mkPreludeMiscIdUnique 54
917 dollarMainKey = mkPreludeMiscIdUnique 55
918 runMainKey = mkPreludeMiscIdUnique 56
920 andIdKey = mkPreludeMiscIdUnique 57
921 orIdKey = mkPreludeMiscIdUnique 58
922 thenIOIdKey = mkPreludeMiscIdUnique 59
923 lazyIdKey = mkPreludeMiscIdUnique 60
924 assertErrorIdKey = mkPreludeMiscIdUnique 61
926 -- Parallel array functions
927 nullPIdKey = mkPreludeMiscIdUnique 80
928 lengthPIdKey = mkPreludeMiscIdUnique 81
929 replicatePIdKey = mkPreludeMiscIdUnique 82
930 mapPIdKey = mkPreludeMiscIdUnique 83
931 filterPIdKey = mkPreludeMiscIdUnique 84
932 zipPIdKey = mkPreludeMiscIdUnique 85
933 crossPIdKey = mkPreludeMiscIdUnique 86
934 indexPIdKey = mkPreludeMiscIdUnique 87
935 toPIdKey = mkPreludeMiscIdUnique 88
936 enumFromToPIdKey = mkPreludeMiscIdUnique 89
937 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
938 bpermutePIdKey = mkPreludeMiscIdUnique 91
939 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
940 indexOfPIdKey = mkPreludeMiscIdUnique 93
943 Certain class operations from Prelude classes. They get their own
944 uniques so we can look them up easily when we want to conjure them up
945 during type checking.
948 -- Just a place holder for unbound variables produced by the renamer:
949 unboundKey = mkPreludeMiscIdUnique 101
951 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
952 minusClassOpKey = mkPreludeMiscIdUnique 103
953 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
954 enumFromClassOpKey = mkPreludeMiscIdUnique 105
955 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
956 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
957 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
958 eqClassOpKey = mkPreludeMiscIdUnique 109
959 geClassOpKey = mkPreludeMiscIdUnique 110
960 negateClassOpKey = mkPreludeMiscIdUnique 111
961 failMClassOpKey = mkPreludeMiscIdUnique 112
962 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
963 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
964 returnMClassOpKey = mkPreludeMiscIdUnique 117
966 -- Recursive do notation
967 mfixIdKey = mkPreludeMiscIdUnique 118
969 ---------------- Template Haskell -------------------
970 -- USES IdUniques 200-299
971 -----------------------------------------------------
975 %************************************************************************
977 \subsection{Standard groups of types}
979 %************************************************************************
991 -- Renamer always imports these data decls replete with constructors
992 -- so that desugarer can always see their constructors. Ugh!
997 , mutableByteArrayTyConKey
1011 %************************************************************************
1013 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1015 %************************************************************************
1017 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1018 even though every numeric class has these two as a superclass,
1019 because the list of ambiguous dictionaries hasn't been simplified.
1027 ++ fractionalClassKeys
1029 fractionalClassKeys =
1030 [ fractionalClassKey
1036 -- the strictness analyser needs to know about numeric types
1037 -- (see SaAbsInt.lhs)
1038 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1044 , cReturnableClassKey
1048 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1050 -- We have to have "CCallable" and "CReturnable" in the standard
1051 -- classes, so that if you go...
1053 -- _ccall_ foo ... 93{-numeric literal-} ...
1055 -- ... it can do The Right Thing on the 93.
1057 noDictClassKeys -- These classes are used only for type annotations;
1058 -- they are not implemented by dictionaries, ever.
1062 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1067 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1068 boundedClassKey, showClassKey, readClassKey ]