2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules and names}
7 -- MetaHaskell Extension
11 3) Add the name to knownKeyNames
14 The strings identify built-in prelude modules. They are
15 defined here so as to avod
17 * ModuleNames for prelude modules,
18 e.g. pREL_BASE_Name :: ModuleName
20 * Modules for prelude modules
21 e.g. pREL_Base :: Module
23 * Uniques for Ids, DataCons, TyCons and Classes that the compiler
24 "knows about" in some way
25 e.g. intTyConKey :: Unique
26 minusClassOpKey :: Unique
28 * Names for Ids, DataCons, TyCons and Classes that the compiler
29 "knows about" in some way
30 e.g. intTyConName :: Name
32 One of these Names contains
33 (a) the module and occurrence name of the thing
35 The may way the compiler "knows about" one of these things is
36 where the type checker or desugarer needs to look it up. For
37 example, when desugaring list comprehensions the desugarer
38 needs to conjure up 'foldr'. It does this by looking up
39 foldrName in the environment.
41 * RdrNames for Ids, DataCons etc that the compiler may emit into
42 generated code (e.g. for deriving). It's not necessary to know
43 the uniques for these guys, only their names
48 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
50 -----------------------------------------------------------
51 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
52 -- (b) Uniques e.g. intTyConKey
53 -- So many that we export them all
55 -----------------------------------------------------------
56 knownKeyNames, templateHaskellNames,
57 mkTupNameStr, isBuiltInSyntaxName,
59 ------------------------------------------------------------
60 -- Goups of classes and types
61 needsDataDeclCtxtClassKeys, cCallishClassKeys, noDictClassKeys,
62 fractionalClassKeys, numericClassKeys, standardClassKeys,
63 derivableClassKeys, -- things are needed as a result of a
65 numericTyKeys, cCallishTyKeys,
67 mkUnboundName, isUnboundName
70 #include "HsVersions.h"
72 import Module ( ModuleName, mkPrelModule, mkHomeModule, mkModuleName,mkVanillaModule )
73 import OccName ( UserFS, dataName, tcName, clsName,
77 -- to avoid clashes with Meta.var we must make a local alias for OccName.varName
78 -- we do this by removing varName from the import of OccName above, making
79 -- a qualified instance of OccName and using OccNameAlias.varName where varName
80 -- ws previously used in this file.
81 import qualified OccName as OccNameAlias
84 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
85 import Unique ( Unique, Uniquable(..), hasKey,
86 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
87 mkPreludeTyConUnique, mkPreludeClassUnique,
88 mkTupleTyConUnique, isTupleKey
90 import BasicTypes ( Boxity(..) )
91 import Name ( Name, mkInternalName, mkKnownKeyExternalName, mkWiredInName, nameUnique )
92 import NameSet ( NameSet, mkNameSet )
93 import SrcLoc ( noSrcLoc )
94 import Util ( nOfThem )
95 import Panic ( panic )
102 %************************************************************************
104 \subsection{Local Names}
106 %************************************************************************
108 This *local* name is used by the interactive stuff
111 itName uniq = mkInternalName uniq (mkOccFS OccNameAlias.varName FSLIT("it")) noSrcLoc
115 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
116 -- during compiler debugging.
117 mkUnboundName :: RdrName -> Name
118 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
120 isUnboundName :: Name -> Bool
121 isUnboundName name = name `hasKey` unboundKey
125 %************************************************************************
127 \subsection{Built-in-syntax names
129 %************************************************************************
131 Built-in syntax names are parsed directly into Exact RdrNames.
132 This predicate just identifies them.
135 isBuiltInSyntaxName :: Name -> Bool
136 isBuiltInSyntaxName n
138 || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
139 funTyConKey, parrTyConKey]
144 %************************************************************************
146 \subsection{Known key Names}
148 %************************************************************************
150 This section tells what the compiler knows about the assocation of
151 names with uniques. These ones are the *non* wired-in ones. The
152 wired in ones are defined in TysWiredIn etc.
155 MetaHaskell Extension
156 It is here that the names defiend in module Meta must be added
158 knownKeyNames :: [Name]
160 = [ -- Type constructors (synonyms especially)
161 ioTyConName, ioDataConName,
168 mutableByteArrayTyConName,
171 stablePtrDataConName,
173 -- Classes. *Must* include:
174 -- classes that are grabbed by key (e.g., eqClassKey)
175 -- classes in "Class.standardClassKeys" (quite a few)
176 eqClassName, -- mentioned, derivable
177 ordClassName, -- derivable
178 boundedClassName, -- derivable
179 numClassName, -- mentioned, numeric
180 enumClassName, -- derivable
183 realClassName, -- numeric
184 integralClassName, -- numeric
185 fractionalClassName, -- numeric
186 floatingClassName, -- numeric
187 realFracClassName, -- numeric
188 realFloatClassName, -- numeric
189 cCallableClassName, -- mentioned, ccallish
190 cReturnableClassName, -- mentioned, ccallish
193 negateName, minusName,
194 fromRationalName, fromIntegerName,
198 enumFromName, enumFromThenName,
199 enumFromThenToName, enumFromToName,
200 enumFromToPName, enumFromThenToPName,
203 thenMName, bindMName, returnMName, failMName,
204 thenIOName, bindIOName, returnIOName, failIOName,
222 unpackCStringName, unpackCStringAppendName,
223 unpackCStringFoldrName, unpackCStringUtf8Name,
226 concatName, filterName,
227 zipName, foldrName, buildName, augmentName, appendName,
229 -- Parallel array operations
230 nullPName, lengthPName, replicatePName, mapPName,
231 filterPName, zipPName, crossPName, indexPName,
232 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
234 -- MetaHaskell Extension, "the smart constructors"
235 -- text1 from Meta/work/gen.hs
277 protoName, matchName, clauseName,
278 exprTyConName, declTyConName, pattTyConName, mtchTyConName, clseTyConName,
279 qTyConName, expTyConName, matTyConName, clsTyConName,
281 -- FFI primitive types that are not wired-in.
282 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
283 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
286 unsafeCoerceName, otherwiseIdName,
287 plusIntegerName, timesIntegerName,
288 eqStringName, assertName, assertErrorName, runSTRepName,
289 printName, splitName, fstName, sndName,
296 monadNames :: [Name] -- The monad ops need by a HsDo
297 monadNames = [returnMName, failMName, bindMName, thenMName]
301 %************************************************************************
303 \subsection{Module names}
305 %************************************************************************
308 --MetaHaskell Extension Add a new module here
310 pRELUDE_Name = mkModuleName "Prelude"
311 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
312 pREL_BASE_Name = mkModuleName "GHC.Base"
313 pREL_ENUM_Name = mkModuleName "GHC.Enum"
314 pREL_SHOW_Name = mkModuleName "GHC.Show"
315 pREL_READ_Name = mkModuleName "GHC.Read"
316 pREL_NUM_Name = mkModuleName "GHC.Num"
317 pREL_LIST_Name = mkModuleName "GHC.List"
318 pREL_PARR_Name = mkModuleName "GHC.PArr"
319 pREL_TUP_Name = mkModuleName "Data.Tuple"
320 pREL_PACK_Name = mkModuleName "GHC.Pack"
321 pREL_CONC_Name = mkModuleName "GHC.Conc"
322 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
323 pREL_ST_Name = mkModuleName "GHC.ST"
324 pREL_ARR_Name = mkModuleName "GHC.Arr"
325 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
326 pREL_STABLE_Name = mkModuleName "GHC.Stable"
327 pREL_ADDR_Name = mkModuleName "GHC.Addr"
328 pREL_PTR_Name = mkModuleName "GHC.Ptr"
329 pREL_ERR_Name = mkModuleName "GHC.Err"
330 pREL_REAL_Name = mkModuleName "GHC.Real"
331 pREL_FLOAT_Name = mkModuleName "GHC.Float"
332 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
333 sYSTEM_IO_Name = mkModuleName "System.IO"
335 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
336 lEX_Name = mkModuleName "Text.Read.Lex"
338 mAIN_Name = mkModuleName "Main"
339 pREL_INT_Name = mkModuleName "GHC.Int"
340 pREL_WORD_Name = mkModuleName "GHC.Word"
341 mONAD_FIX_Name = mkModuleName "Control.Monad.MonadRec"
342 aDDR_Name = mkModuleName "Addr"
344 gLA_EXTS_Name = mkModuleName "GHC.Exts"
346 gHC_PRIM = mkPrelModule gHC_PRIM_Name
347 pREL_BASE = mkPrelModule pREL_BASE_Name
348 pREL_ADDR = mkPrelModule pREL_ADDR_Name
349 pREL_PTR = mkPrelModule pREL_PTR_Name
350 pREL_STABLE = mkPrelModule pREL_STABLE_Name
351 pREL_IO_BASE = mkPrelModule pREL_IO_BASE_Name
352 pREL_PACK = mkPrelModule pREL_PACK_Name
353 pREL_ERR = mkPrelModule pREL_ERR_Name
354 pREL_NUM = mkPrelModule pREL_NUM_Name
355 pREL_REAL = mkPrelModule pREL_REAL_Name
356 pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
357 pRELUDE = mkPrelModule pRELUDE_Name
360 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
362 -- MetaHaskell Extension text2 from Meta/work/gen.hs
363 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
367 %************************************************************************
369 \subsection{Constructing the names of tuples
371 %************************************************************************
374 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
376 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
377 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
378 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
379 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
380 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
381 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
383 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
384 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
385 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
386 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
387 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
388 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
392 %************************************************************************
396 %************************************************************************
399 getTag_RDR = nameRdrName getTagName
401 eq_RDR = nameRdrName eqName
402 ge_RDR = nameRdrName geName
403 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
404 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
405 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
406 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
407 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
408 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
409 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
411 eqClass_RDR = nameRdrName eqClassName
412 numClass_RDR = nameRdrName numClassName
413 ordClass_RDR = nameRdrName ordClassName
414 enumClass_RDR = nameRdrName enumClassName
415 monadClass_RDR = nameRdrName monadClassName
416 cCallableClass_RDR = nameRdrName cCallableClassName
417 cReturnableClass_RDR = nameRdrName cReturnableClassName
419 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
420 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
422 foldr_RDR = nameRdrName foldrName
423 build_RDR = nameRdrName buildName
424 returnM_RDR = nameRdrName returnMName
425 bindM_RDR = nameRdrName bindMName
426 failM_RDR = nameRdrName failMName
428 false_RDR = nameRdrName falseDataConName
429 true_RDR = nameRdrName trueDataConName
430 and_RDR = nameRdrName andName
432 error_RDR = nameRdrName errorName
434 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
435 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
436 mkInt_RDR = nameRdrName intDataConName
438 enumFrom_RDR = nameRdrName enumFromName
439 enumFromTo_RDR = nameRdrName enumFromToName
440 enumFromThen_RDR = nameRdrName enumFromThenName
441 enumFromThenTo_RDR = nameRdrName enumFromThenToName
443 ratioDataCon_RDR = nameRdrName ratioDataConName
444 plusInteger_RDR = nameRdrName plusIntegerName
445 timesInteger_RDR = nameRdrName timesIntegerName
447 ioDataCon_RDR = nameRdrName ioDataConName
449 eqString_RDR = nameRdrName eqStringName
450 unpackCString_RDR = nameRdrName unpackCStringName
451 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
452 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
454 newStablePtr_RDR = nameRdrName newStablePtrName
456 bindIO_RDR = nameRdrName bindIOName
457 returnIO_RDR = nameRdrName returnIOName
459 fromInteger_RDR = nameRdrName fromIntegerName
460 fromRational_RDR = nameRdrName fromRationalName
461 minus_RDR = nameRdrName minusName
462 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
463 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
465 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
467 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
468 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
469 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
470 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
471 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
472 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
473 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
474 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
476 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
477 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
478 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
479 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
480 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
481 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
482 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
483 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
485 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
486 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
487 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
489 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
490 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
491 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
492 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
494 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
495 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
496 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
497 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
498 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
499 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
503 %************************************************************************
505 \subsection{Known-key names}
507 %************************************************************************
509 Many of these Names are not really "built in", but some parts of the
510 compiler (notably the deriving mechanism) need to mention their names,
511 and it's convenient to write them all down in one place.
513 --MetaHaskell Extension add the constrs and the lower case case
514 -- guys as well (perhaps) e.g. see trueDataConName below
518 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
519 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
521 -- Stuff from GHC.Prim
522 usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
523 usManyTyConName = kindQual FSLIT("!") usManyTyConKey
524 superKindName = kindQual FSLIT("KX") kindConKey
525 superBoxityName = kindQual FSLIT("BX") boxityConKey
526 liftedConName = kindQual FSLIT("*") liftedConKey
527 unliftedConName = kindQual FSLIT("#") unliftedConKey
528 openKindConName = kindQual FSLIT("?") anyBoxConKey
529 usageKindConName = kindQual FSLIT("$") usageConKey
530 typeConName = kindQual FSLIT("Type") typeConKey
532 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
533 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
534 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
535 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
536 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
537 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
538 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
539 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
540 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
541 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
542 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
543 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
544 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
545 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
546 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
547 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
548 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
549 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
550 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
551 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
552 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
553 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
554 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
555 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
556 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
557 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
558 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
560 getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
561 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
562 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
563 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
564 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
566 -- PrelBase data types and constructors
567 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
568 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
569 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
570 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
571 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
572 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
573 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
574 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
575 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
576 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
577 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
578 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
579 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
582 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
583 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
584 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
585 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
586 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
587 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
588 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
590 -- Base strings Strings
591 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
592 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
593 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
594 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
595 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
597 -- Base classes (Eq, Ord, Functor)
598 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
599 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
600 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
603 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
604 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
605 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
606 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
607 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
610 -- Random PrelBase functions
611 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
612 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
613 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
614 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
615 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
616 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
617 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
618 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
619 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
622 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
623 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
626 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
627 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
628 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
629 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
630 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
631 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
632 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
633 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
634 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
636 -- PrelReal types and classes
637 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
638 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
639 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
640 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
641 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
642 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
643 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
644 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
647 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
648 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
649 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
650 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
651 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
652 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
655 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
657 -- Enum module (Enum, Bounded)
658 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
659 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
660 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
661 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
662 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
663 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
666 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
667 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
668 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
670 -- MetaHaskell Extension, "the smart constructors"
671 -- text3 from Meta/work/gen.hs
672 intLName = varQual mETA_META_Name FSLIT("intL") intLIdKey
673 charLName = varQual mETA_META_Name FSLIT("charL") charLIdKey
674 plitName = varQual mETA_META_Name FSLIT("plit") plitIdKey
675 pvarName = varQual mETA_META_Name FSLIT("pvar") pvarIdKey
676 ptupName = varQual mETA_META_Name FSLIT("ptup") ptupIdKey
677 pconName = varQual mETA_META_Name FSLIT("pcon") pconIdKey
678 ptildeName = varQual mETA_META_Name FSLIT("ptilde") ptildeIdKey
679 paspatName = varQual mETA_META_Name FSLIT("paspat") paspatIdKey
680 pwildName = varQual mETA_META_Name FSLIT("pwild") pwildIdKey
681 varName = varQual mETA_META_Name FSLIT("var") varIdKey
682 conName = varQual mETA_META_Name FSLIT("con") conIdKey
683 litName = varQual mETA_META_Name FSLIT("lit") litIdKey
684 appName = varQual mETA_META_Name FSLIT("app") appIdKey
685 infixEName = varQual mETA_META_Name FSLIT("infixE") infixEIdKey
686 lamName = varQual mETA_META_Name FSLIT("lam") lamIdKey
687 tupName = varQual mETA_META_Name FSLIT("tup") tupIdKey
688 doEName = varQual mETA_META_Name FSLIT("doE") doEIdKey
689 compName = varQual mETA_META_Name FSLIT("comp") compIdKey
690 listExpName = varQual mETA_META_Name FSLIT("listExp") listExpIdKey
691 condName = varQual mETA_META_Name FSLIT("cond") condIdKey
692 letEName = varQual mETA_META_Name FSLIT("letE") letEIdKey
693 caseEName = varQual mETA_META_Name FSLIT("caseE") caseEIdKey
694 infixAppName = varQual mETA_META_Name FSLIT("infixApp") infixAppIdKey
695 sectionLName = varQual mETA_META_Name FSLIT("sectionL") sectionLIdKey
696 sectionRName = varQual mETA_META_Name FSLIT("sectionR") sectionRIdKey
697 guardedName = varQual mETA_META_Name FSLIT("guarded") guardedIdKey
698 normalName = varQual mETA_META_Name FSLIT("normal") normalIdKey
699 bindStName = varQual mETA_META_Name FSLIT("bindSt") bindStIdKey
700 letStName = varQual mETA_META_Name FSLIT("letSt") letStIdKey
701 noBindStName = varQual mETA_META_Name FSLIT("noBindSt") noBindStIdKey
702 parStName = varQual mETA_META_Name FSLIT("parSt") parStIdKey
703 fromName = varQual mETA_META_Name FSLIT("from") fromIdKey
704 fromThenName = varQual mETA_META_Name FSLIT("fromThen") fromThenIdKey
705 fromToName = varQual mETA_META_Name FSLIT("fromTo") fromToIdKey
706 fromThenToName = varQual mETA_META_Name FSLIT("fromThenTo") fromThenToIdKey
707 liftName = varQual mETA_META_Name FSLIT("lift") liftIdKey
708 gensymName = varQual mETA_META_Name FSLIT("gensym") gensymIdKey
709 returnQName = varQual mETA_META_Name FSLIT("returnQ") returnQIdKey
710 bindQName = varQual mETA_META_Name FSLIT("bindQ") bindQIdKey
711 funName = varQual mETA_META_Name FSLIT("fun") funIdKey
712 valName = varQual mETA_META_Name FSLIT("val") valIdKey
713 matchName = varQual mETA_META_Name FSLIT("match") matchIdKey
714 clauseName = varQual mETA_META_Name FSLIT("clause") clauseIdKey
715 protoName = varQual mETA_META_Name FSLIT("proto") protoIdKey
716 exprTyConName = tcQual mETA_META_Name FSLIT("Expr") exprTyConKey
717 declTyConName = tcQual mETA_META_Name FSLIT("Decl") declTyConKey
718 pattTyConName = tcQual mETA_META_Name FSLIT("Patt") pattTyConKey
719 mtchTyConName = tcQual mETA_META_Name FSLIT("Mtch") mtchTyConKey
720 clseTyConName = tcQual mETA_META_Name FSLIT("Clse") clseTyConKey
721 stmtTyConName = tcQual mETA_META_Name FSLIT("Stmt") stmtTyConKey
723 qTyConName = tcQual mETA_META_Name FSLIT("Q") qTyConKey
724 expTyConName = tcQual mETA_META_Name FSLIT("Exp") expTyConKey
725 matTyConName = tcQual mETA_META_Name FSLIT("Mat") matTyConKey
726 clsTyConName = tcQual mETA_META_Name FSLIT("Cls") clsTyConKey
729 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
732 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
734 -- parallel array types and functions
735 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
736 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
737 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
738 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
739 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
740 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
741 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
742 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
743 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
744 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
745 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
746 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
747 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
748 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
749 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
750 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
753 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
754 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
755 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
756 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
757 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
758 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
761 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
763 -- Int, Word, and Addr things
764 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
765 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
766 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
767 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
770 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
771 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
772 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
773 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
774 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
775 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
778 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
779 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
782 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
783 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
784 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
785 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
788 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
789 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
791 -- Foreign objects and weak pointers
792 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
793 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
794 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
797 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
798 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
799 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
800 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
801 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
802 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
803 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
804 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
805 nonExhaustiveGuardsErrorName
806 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
809 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
811 -- The "split" Id for splittable implicit parameters
812 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
814 -- Recursive-do notation
815 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
818 %************************************************************************
820 \subsection{Standard groups of names}
822 %************************************************************************
825 templateHaskellNames :: NameSet
826 -- The names that are implicitly mentioned by ``bracket''
827 -- Should stay in sync with the import list of DsMeta
829 = mkNameSet [ intLName,charLName, plitName, pvarName, ptupName,
830 pconName, ptildeName, paspatName, pwildName,
831 varName, conName, litName, appName, lamName,
832 tupName, doEName, compName,
833 listExpName, condName, letEName, caseEName,
834 infixAppName, guardedName, normalName,
835 bindStName, letStName, noBindStName, parStName,
836 fromName, fromThenName, fromToName, fromThenToName,
837 funName, valName, liftName,gensymName, bindQName,
838 appendName, matchName, clauseName ]
841 %************************************************************************
843 \subsection{Local helpers}
845 %************************************************************************
847 All these are original names; hence mkOrig
850 varQual = mk_known_key_name OccNameAlias.varName -- Note use of local alias vName
851 dataQual = mk_known_key_name dataName
852 tcQual = mk_known_key_name tcName
853 clsQual = mk_known_key_name clsName
855 wVarQual = mk_wired_in_name OccNameAlias.varName -- The wired-in analogues
856 wDataQual = mk_wired_in_name dataName
857 wTcQual = mk_wired_in_name tcName
859 varQual_RDR mod str = mkOrig mod (mkOccFS OccNameAlias.varName str) -- note use of local alias vName
860 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
861 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
862 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
864 mk_known_key_name space mod str uniq
865 = mkKnownKeyExternalName mod (mkOccFS space str) uniq
866 mk_wired_in_name space mod str uniq
867 = mkWiredInName (mkVanillaModule mod) (mkOccFS space str) uniq
869 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
870 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
871 -- And they don't come from any particular module; indeed we always
872 -- want to print them unqualified. Hence the LocalName
875 %************************************************************************
877 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
879 %************************************************************************
880 --MetaHaskell extension hand allocate keys here
883 boundedClassKey = mkPreludeClassUnique 1
884 enumClassKey = mkPreludeClassUnique 2
885 eqClassKey = mkPreludeClassUnique 3
886 floatingClassKey = mkPreludeClassUnique 5
887 fractionalClassKey = mkPreludeClassUnique 6
888 integralClassKey = mkPreludeClassUnique 7
889 monadClassKey = mkPreludeClassUnique 8
890 functorClassKey = mkPreludeClassUnique 10
891 numClassKey = mkPreludeClassUnique 11
892 ordClassKey = mkPreludeClassUnique 12
893 readClassKey = mkPreludeClassUnique 13
894 realClassKey = mkPreludeClassUnique 14
895 realFloatClassKey = mkPreludeClassUnique 15
896 realFracClassKey = mkPreludeClassUnique 16
897 showClassKey = mkPreludeClassUnique 17
899 cCallableClassKey = mkPreludeClassUnique 18
900 cReturnableClassKey = mkPreludeClassUnique 19
902 ixClassKey = mkPreludeClassUnique 20
905 %************************************************************************
907 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
909 %************************************************************************
912 addrPrimTyConKey = mkPreludeTyConUnique 1
913 addrTyConKey = mkPreludeTyConUnique 2
914 arrayPrimTyConKey = mkPreludeTyConUnique 3
915 boolTyConKey = mkPreludeTyConUnique 4
916 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
917 charPrimTyConKey = mkPreludeTyConUnique 7
918 charTyConKey = mkPreludeTyConUnique 8
919 doublePrimTyConKey = mkPreludeTyConUnique 9
920 doubleTyConKey = mkPreludeTyConUnique 10
921 floatPrimTyConKey = mkPreludeTyConUnique 11
922 floatTyConKey = mkPreludeTyConUnique 12
923 funTyConKey = mkPreludeTyConUnique 13
924 intPrimTyConKey = mkPreludeTyConUnique 14
925 intTyConKey = mkPreludeTyConUnique 15
926 int8TyConKey = mkPreludeTyConUnique 16
927 int16TyConKey = mkPreludeTyConUnique 17
928 int32PrimTyConKey = mkPreludeTyConUnique 18
929 int32TyConKey = mkPreludeTyConUnique 19
930 int64PrimTyConKey = mkPreludeTyConUnique 20
931 int64TyConKey = mkPreludeTyConUnique 21
932 integerTyConKey = mkPreludeTyConUnique 22
933 listTyConKey = mkPreludeTyConUnique 23
934 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
935 weakPrimTyConKey = mkPreludeTyConUnique 27
936 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
937 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
938 orderingTyConKey = mkPreludeTyConUnique 30
939 mVarPrimTyConKey = mkPreludeTyConUnique 31
940 ratioTyConKey = mkPreludeTyConUnique 32
941 rationalTyConKey = mkPreludeTyConUnique 33
942 realWorldTyConKey = mkPreludeTyConUnique 34
943 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
944 stablePtrTyConKey = mkPreludeTyConUnique 36
945 statePrimTyConKey = mkPreludeTyConUnique 50
946 stableNamePrimTyConKey = mkPreludeTyConUnique 51
947 stableNameTyConKey = mkPreludeTyConUnique 52
948 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
949 mutVarPrimTyConKey = mkPreludeTyConUnique 55
950 ioTyConKey = mkPreludeTyConUnique 56
951 byteArrayTyConKey = mkPreludeTyConUnique 57
952 wordPrimTyConKey = mkPreludeTyConUnique 58
953 wordTyConKey = mkPreludeTyConUnique 59
954 word8TyConKey = mkPreludeTyConUnique 60
955 word16TyConKey = mkPreludeTyConUnique 61
956 word32PrimTyConKey = mkPreludeTyConUnique 62
957 word32TyConKey = mkPreludeTyConUnique 63
958 word64PrimTyConKey = mkPreludeTyConUnique 64
959 word64TyConKey = mkPreludeTyConUnique 65
960 liftedConKey = mkPreludeTyConUnique 66
961 unliftedConKey = mkPreludeTyConUnique 67
962 anyBoxConKey = mkPreludeTyConUnique 68
963 kindConKey = mkPreludeTyConUnique 69
964 boxityConKey = mkPreludeTyConUnique 70
965 typeConKey = mkPreludeTyConUnique 71
966 threadIdPrimTyConKey = mkPreludeTyConUnique 72
967 bcoPrimTyConKey = mkPreludeTyConUnique 73
968 ptrTyConKey = mkPreludeTyConUnique 74
969 funPtrTyConKey = mkPreludeTyConUnique 75
971 -- Usage type constructors
972 usageConKey = mkPreludeTyConUnique 76
973 usOnceTyConKey = mkPreludeTyConUnique 77
974 usManyTyConKey = mkPreludeTyConUnique 78
976 -- Generic Type Constructors
977 crossTyConKey = mkPreludeTyConUnique 79
978 plusTyConKey = mkPreludeTyConUnique 80
979 genUnitTyConKey = mkPreludeTyConUnique 81
981 -- Parallel array type constructor
982 parrTyConKey = mkPreludeTyConUnique 82
985 qTyConKey = mkPreludeTyConUnique 83
986 exprTyConKey = mkPreludeTyConUnique 84
987 declTyConKey = mkPreludeTyConUnique 85
988 pattTyConKey = mkPreludeTyConUnique 86
989 mtchTyConKey = mkPreludeTyConUnique 87
990 clseTyConKey = mkPreludeTyConUnique 88
991 stmtTyConKey = mkPreludeTyConUnique 89
992 expTyConKey = mkPreludeTyConUnique 90
993 matTyConKey = mkPreludeTyConUnique 91
994 clsTyConKey = mkPreludeTyConUnique 92
996 unitTyConKey = mkTupleTyConUnique Boxed 0
999 %************************************************************************
1001 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1003 %************************************************************************
1006 addrDataConKey = mkPreludeDataConUnique 0
1007 charDataConKey = mkPreludeDataConUnique 1
1008 consDataConKey = mkPreludeDataConUnique 2
1009 doubleDataConKey = mkPreludeDataConUnique 3
1010 falseDataConKey = mkPreludeDataConUnique 4
1011 floatDataConKey = mkPreludeDataConUnique 5
1012 intDataConKey = mkPreludeDataConUnique 6
1013 smallIntegerDataConKey = mkPreludeDataConUnique 7
1014 largeIntegerDataConKey = mkPreludeDataConUnique 8
1015 nilDataConKey = mkPreludeDataConUnique 11
1016 ratioDataConKey = mkPreludeDataConUnique 12
1017 stablePtrDataConKey = mkPreludeDataConUnique 13
1018 stableNameDataConKey = mkPreludeDataConUnique 14
1019 trueDataConKey = mkPreludeDataConUnique 15
1020 wordDataConKey = mkPreludeDataConUnique 16
1021 ioDataConKey = mkPreludeDataConUnique 17
1022 ptrDataConKey = mkPreludeDataConUnique 18
1023 funPtrDataConKey = mkPreludeDataConUnique 19
1025 -- Generic data constructors
1026 crossDataConKey = mkPreludeDataConUnique 20
1027 inlDataConKey = mkPreludeDataConUnique 21
1028 inrDataConKey = mkPreludeDataConUnique 22
1029 genUnitDataConKey = mkPreludeDataConUnique 23
1031 -- Data constructor for parallel arrays
1032 parrDataConKey = mkPreludeDataConUnique 24
1035 %************************************************************************
1037 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1039 %************************************************************************
1042 absentErrorIdKey = mkPreludeMiscIdUnique 1
1043 getTagIdKey = mkPreludeMiscIdUnique 2
1044 augmentIdKey = mkPreludeMiscIdUnique 3
1045 appendIdKey = mkPreludeMiscIdUnique 4
1046 buildIdKey = mkPreludeMiscIdUnique 5
1047 errorIdKey = mkPreludeMiscIdUnique 6
1048 foldlIdKey = mkPreludeMiscIdUnique 7
1049 foldrIdKey = mkPreludeMiscIdUnique 8
1050 recSelErrorIdKey = mkPreludeMiscIdUnique 9
1051 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
1052 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
1053 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
1054 integerZeroIdKey = mkPreludeMiscIdUnique 13
1055 int2IntegerIdKey = mkPreludeMiscIdUnique 14
1056 seqIdKey = mkPreludeMiscIdUnique 15
1057 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
1058 eqStringIdKey = mkPreludeMiscIdUnique 17
1059 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
1060 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1061 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
1062 parErrorIdKey = mkPreludeMiscIdUnique 21
1063 parIdKey = mkPreludeMiscIdUnique 22
1064 patErrorIdKey = mkPreludeMiscIdUnique 23
1065 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
1066 recConErrorIdKey = mkPreludeMiscIdUnique 25
1067 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
1068 traceIdKey = mkPreludeMiscIdUnique 27
1069 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
1070 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
1071 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
1072 unpackCStringIdKey = mkPreludeMiscIdUnique 31
1074 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
1075 concatIdKey = mkPreludeMiscIdUnique 33
1076 filterIdKey = mkPreludeMiscIdUnique 34
1077 zipIdKey = mkPreludeMiscIdUnique 35
1078 bindIOIdKey = mkPreludeMiscIdUnique 36
1079 returnIOIdKey = mkPreludeMiscIdUnique 37
1080 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
1081 newStablePtrIdKey = mkPreludeMiscIdUnique 39
1082 plusIntegerIdKey = mkPreludeMiscIdUnique 41
1083 timesIntegerIdKey = mkPreludeMiscIdUnique 42
1084 printIdKey = mkPreludeMiscIdUnique 43
1085 failIOIdKey = mkPreludeMiscIdUnique 44
1086 nullAddrIdKey = mkPreludeMiscIdUnique 46
1087 voidArgIdKey = mkPreludeMiscIdUnique 47
1088 splitIdKey = mkPreludeMiscIdUnique 48
1089 fstIdKey = mkPreludeMiscIdUnique 49
1090 sndIdKey = mkPreludeMiscIdUnique 50
1091 otherwiseIdKey = mkPreludeMiscIdUnique 51
1092 assertIdKey = mkPreludeMiscIdUnique 53
1093 runSTRepIdKey = mkPreludeMiscIdUnique 54
1095 dollarMainKey = mkPreludeMiscIdUnique 55
1096 runMainKey = mkPreludeMiscIdUnique 56
1098 andIdKey = mkPreludeMiscIdUnique 57
1099 orIdKey = mkPreludeMiscIdUnique 58
1100 thenIOIdKey = mkPreludeMiscIdUnique 59
1101 lazyIdKey = mkPreludeMiscIdUnique 60
1102 assertErrorIdKey = mkPreludeMiscIdUnique 61
1104 -- Parallel array functions
1105 nullPIdKey = mkPreludeMiscIdUnique 80
1106 lengthPIdKey = mkPreludeMiscIdUnique 81
1107 replicatePIdKey = mkPreludeMiscIdUnique 82
1108 mapPIdKey = mkPreludeMiscIdUnique 83
1109 filterPIdKey = mkPreludeMiscIdUnique 84
1110 zipPIdKey = mkPreludeMiscIdUnique 85
1111 crossPIdKey = mkPreludeMiscIdUnique 86
1112 indexPIdKey = mkPreludeMiscIdUnique 87
1113 toPIdKey = mkPreludeMiscIdUnique 88
1114 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1115 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1116 bpermutePIdKey = mkPreludeMiscIdUnique 91
1117 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
1118 indexOfPIdKey = mkPreludeMiscIdUnique 93
1121 Certain class operations from Prelude classes. They get their own
1122 uniques so we can look them up easily when we want to conjure them up
1123 during type checking.
1126 -- Just a place holder for unbound variables produced by the renamer:
1127 unboundKey = mkPreludeMiscIdUnique 101
1129 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1130 minusClassOpKey = mkPreludeMiscIdUnique 103
1131 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1132 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1133 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1134 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1135 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1136 eqClassOpKey = mkPreludeMiscIdUnique 109
1137 geClassOpKey = mkPreludeMiscIdUnique 110
1138 negateClassOpKey = mkPreludeMiscIdUnique 111
1139 failMClassOpKey = mkPreludeMiscIdUnique 112
1140 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1141 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1142 returnMClassOpKey = mkPreludeMiscIdUnique 117
1144 -- MetaHaskell Extension, (text4 118) from Meta/work/gen.hs
1145 intLIdKey = mkPreludeMiscIdUnique 118
1146 charLIdKey = mkPreludeMiscIdUnique 119
1147 plitIdKey = mkPreludeMiscIdUnique 120
1148 pvarIdKey = mkPreludeMiscIdUnique 121
1149 ptupIdKey = mkPreludeMiscIdUnique 122
1150 pconIdKey = mkPreludeMiscIdUnique 123
1151 ptildeIdKey = mkPreludeMiscIdUnique 124
1152 paspatIdKey = mkPreludeMiscIdUnique 125
1153 pwildIdKey = mkPreludeMiscIdUnique 126
1154 varIdKey = mkPreludeMiscIdUnique 127
1155 conIdKey = mkPreludeMiscIdUnique 128
1156 litIdKey = mkPreludeMiscIdUnique 129
1157 appIdKey = mkPreludeMiscIdUnique 130
1158 infixEIdKey = mkPreludeMiscIdUnique 131
1159 lamIdKey = mkPreludeMiscIdUnique 132
1160 tupIdKey = mkPreludeMiscIdUnique 133
1161 doEIdKey = mkPreludeMiscIdUnique 134
1162 compIdKey = mkPreludeMiscIdUnique 135
1163 listExpIdKey = mkPreludeMiscIdUnique 137
1164 condIdKey = mkPreludeMiscIdUnique 138
1165 letEIdKey = mkPreludeMiscIdUnique 139
1166 caseEIdKey = mkPreludeMiscIdUnique 140
1167 infixAppIdKey = mkPreludeMiscIdUnique 141
1168 sectionLIdKey = mkPreludeMiscIdUnique 142
1169 sectionRIdKey = mkPreludeMiscIdUnique 143
1170 guardedIdKey = mkPreludeMiscIdUnique 144
1171 normalIdKey = mkPreludeMiscIdUnique 145
1172 bindStIdKey = mkPreludeMiscIdUnique 146
1173 letStIdKey = mkPreludeMiscIdUnique 147
1174 noBindStIdKey = mkPreludeMiscIdUnique 148
1175 parStIdKey = mkPreludeMiscIdUnique 149
1176 fromIdKey = mkPreludeMiscIdUnique 150
1177 fromThenIdKey = mkPreludeMiscIdUnique 151
1178 fromToIdKey = mkPreludeMiscIdUnique 152
1179 fromThenToIdKey = mkPreludeMiscIdUnique 153
1180 liftIdKey = mkPreludeMiscIdUnique 154
1181 gensymIdKey = mkPreludeMiscIdUnique 155
1182 returnQIdKey = mkPreludeMiscIdUnique 156
1183 bindQIdKey = mkPreludeMiscIdUnique 157
1184 funIdKey = mkPreludeMiscIdUnique 158
1185 valIdKey = mkPreludeMiscIdUnique 159
1186 protoIdKey = mkPreludeMiscIdUnique 160
1187 matchIdKey = mkPreludeMiscIdUnique 161
1188 clauseIdKey = mkPreludeMiscIdUnique 162
1190 -- Recursive do notation
1191 mfixIdKey = mkPreludeMiscIdUnique 163
1195 %************************************************************************
1197 \subsection{Standard groups of types}
1199 %************************************************************************
1211 -- Renamer always imports these data decls replete with constructors
1212 -- so that desugarer can always see their constructors. Ugh!
1217 , mutableByteArrayTyConKey
1231 %************************************************************************
1233 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1235 %************************************************************************
1237 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1238 even though every numeric class has these two as a superclass,
1239 because the list of ambiguous dictionaries hasn't been simplified.
1247 ++ fractionalClassKeys
1249 fractionalClassKeys =
1250 [ fractionalClassKey
1256 -- the strictness analyser needs to know about numeric types
1257 -- (see SaAbsInt.lhs)
1258 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1264 , cReturnableClassKey
1268 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1270 -- We have to have "CCallable" and "CReturnable" in the standard
1271 -- classes, so that if you go...
1273 -- _ccall_ foo ... 93{-numeric literal-} ...
1275 -- ... it can do The Right Thing on the 93.
1277 noDictClassKeys -- These classes are used only for type annotations;
1278 -- they are not implemented by dictionaries, ever.
1282 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1287 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1288 boundedClassKey, showClassKey, readClassKey ]