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,
219 unpackCStringName, unpackCStringAppendName,
220 unpackCStringFoldrName, unpackCStringUtf8Name,
223 concatName, filterName,
224 zipName, foldrName, buildName, augmentName, appendName,
226 -- Parallel array operations
227 nullPName, lengthPName, replicatePName, mapPName,
228 filterPName, zipPName, crossPName, indexPName,
229 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
231 -- MetaHaskell Extension, "the smart constructors"
232 -- text1 from Meta/work/gen.hs
274 protoName, matchName, clauseName,
275 exprTyConName, declTyConName, pattTyConName, mtchTyConName, clseTyConName,
276 qTyConName, expTyConName, matTyConName, clsTyConName,
278 -- FFI primitive types that are not wired-in.
279 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
280 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
283 unsafeCoerceName, otherwiseIdName,
284 plusIntegerName, timesIntegerName,
285 eqStringName, assertName, runSTRepName,
286 printName, splitName, fstName, sndName,
293 monadNames :: [Name] -- The monad ops need by a HsDo
294 monadNames = [returnMName, failMName, bindMName, thenMName]
298 %************************************************************************
300 \subsection{Module names}
302 %************************************************************************
305 --MetaHaskell Extension Add a new module here
307 pRELUDE_Name = mkModuleName "Prelude"
308 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
309 pREL_BASE_Name = mkModuleName "GHC.Base"
310 pREL_ENUM_Name = mkModuleName "GHC.Enum"
311 pREL_SHOW_Name = mkModuleName "GHC.Show"
312 pREL_READ_Name = mkModuleName "GHC.Read"
313 pREL_NUM_Name = mkModuleName "GHC.Num"
314 pREL_LIST_Name = mkModuleName "GHC.List"
315 pREL_PARR_Name = mkModuleName "GHC.PArr"
316 pREL_TUP_Name = mkModuleName "Data.Tuple"
317 pREL_PACK_Name = mkModuleName "GHC.Pack"
318 pREL_CONC_Name = mkModuleName "GHC.Conc"
319 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
320 pREL_ST_Name = mkModuleName "GHC.ST"
321 pREL_ARR_Name = mkModuleName "GHC.Arr"
322 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
323 pREL_STABLE_Name = mkModuleName "GHC.Stable"
324 pREL_ADDR_Name = mkModuleName "GHC.Addr"
325 pREL_PTR_Name = mkModuleName "GHC.Ptr"
326 pREL_ERR_Name = mkModuleName "GHC.Err"
327 pREL_REAL_Name = mkModuleName "GHC.Real"
328 pREL_FLOAT_Name = mkModuleName "GHC.Float"
329 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
330 sYSTEM_IO_Name = mkModuleName "System.IO"
332 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
333 lEX_Name = mkModuleName "Text.Read.Lex"
335 mAIN_Name = mkModuleName "Main"
336 pREL_INT_Name = mkModuleName "GHC.Int"
337 pREL_WORD_Name = mkModuleName "GHC.Word"
339 aDDR_Name = mkModuleName "Addr"
341 gLA_EXTS_Name = mkModuleName "GHC.Exts"
343 gHC_PRIM = mkPrelModule gHC_PRIM_Name
344 pREL_BASE = mkPrelModule pREL_BASE_Name
345 pREL_ADDR = mkPrelModule pREL_ADDR_Name
346 pREL_PTR = mkPrelModule pREL_PTR_Name
347 pREL_STABLE = mkPrelModule pREL_STABLE_Name
348 pREL_IO_BASE = mkPrelModule pREL_IO_BASE_Name
349 pREL_PACK = mkPrelModule pREL_PACK_Name
350 pREL_ERR = mkPrelModule pREL_ERR_Name
351 pREL_NUM = mkPrelModule pREL_NUM_Name
352 pREL_REAL = mkPrelModule pREL_REAL_Name
353 pREL_FLOAT = mkPrelModule pREL_FLOAT_Name
354 pRELUDE = mkPrelModule pRELUDE_Name
356 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
358 -- MetaHaskell Extension text2 from Meta/work/gen.hs
359 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
363 %************************************************************************
365 \subsection{Constructing the names of tuples
367 %************************************************************************
370 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
372 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
373 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
374 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
375 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
376 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
377 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
379 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
380 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
381 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
382 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
383 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
384 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
388 %************************************************************************
392 %************************************************************************
395 getTag_RDR = nameRdrName getTagName
397 eq_RDR = nameRdrName eqName
398 ge_RDR = nameRdrName geName
399 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
400 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
401 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
402 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
403 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
404 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
405 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
407 eqClass_RDR = nameRdrName eqClassName
408 numClass_RDR = nameRdrName numClassName
409 ordClass_RDR = nameRdrName ordClassName
410 enumClass_RDR = nameRdrName enumClassName
411 monadClass_RDR = nameRdrName monadClassName
412 cCallableClass_RDR = nameRdrName cCallableClassName
413 cReturnableClass_RDR = nameRdrName cReturnableClassName
415 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
416 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
418 foldr_RDR = nameRdrName foldrName
419 build_RDR = nameRdrName buildName
420 returnM_RDR = nameRdrName returnMName
421 bindM_RDR = nameRdrName bindMName
422 failM_RDR = nameRdrName failMName
424 false_RDR = nameRdrName falseDataConName
425 true_RDR = nameRdrName trueDataConName
426 and_RDR = nameRdrName andName
428 error_RDR = nameRdrName errorName
430 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
431 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
432 mkInt_RDR = nameRdrName intDataConName
434 enumFrom_RDR = nameRdrName enumFromName
435 enumFromTo_RDR = nameRdrName enumFromToName
436 enumFromThen_RDR = nameRdrName enumFromThenName
437 enumFromThenTo_RDR = nameRdrName enumFromThenToName
439 ratioDataCon_RDR = nameRdrName ratioDataConName
440 plusInteger_RDR = nameRdrName plusIntegerName
441 timesInteger_RDR = nameRdrName timesIntegerName
443 ioDataCon_RDR = nameRdrName ioDataConName
445 eqString_RDR = nameRdrName eqStringName
446 unpackCString_RDR = nameRdrName unpackCStringName
447 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
448 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
450 newStablePtr_RDR = nameRdrName newStablePtrName
452 bindIO_RDR = nameRdrName bindIOName
453 returnIO_RDR = nameRdrName returnIOName
455 fromInteger_RDR = nameRdrName fromIntegerName
456 fromRational_RDR = nameRdrName fromRationalName
457 minus_RDR = nameRdrName minusName
458 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
459 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
461 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
463 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
464 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
465 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
466 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
467 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
468 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
469 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
470 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
472 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
473 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
474 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
475 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
476 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
477 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
478 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
479 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
481 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
482 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
483 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
485 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
486 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
487 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
488 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
490 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
491 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
492 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
493 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
494 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
495 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
499 %************************************************************************
501 \subsection{Known-key names}
503 %************************************************************************
505 Many of these Names are not really "built in", but some parts of the
506 compiler (notably the deriving mechanism) need to mention their names,
507 and it's convenient to write them all down in one place.
509 --MetaHaskell Extension add the constrs and the lower case case
510 -- guys as well (perhaps) e.g. see trueDataConName below
514 dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
515 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
517 -- Stuff from GHC.Prim
518 usOnceTyConName = kindQual FSLIT(".") usOnceTyConKey
519 usManyTyConName = kindQual FSLIT("!") usManyTyConKey
520 superKindName = kindQual FSLIT("KX") kindConKey
521 superBoxityName = kindQual FSLIT("BX") boxityConKey
522 liftedConName = kindQual FSLIT("*") liftedConKey
523 unliftedConName = kindQual FSLIT("#") unliftedConKey
524 openKindConName = kindQual FSLIT("?") anyBoxConKey
525 usageKindConName = kindQual FSLIT("$") usageConKey
526 typeConName = kindQual FSLIT("Type") typeConKey
528 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
529 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
530 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
531 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
532 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
533 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
534 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
535 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
536 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
537 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
538 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
539 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
540 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
541 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
542 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
543 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
544 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
545 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
546 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
547 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
548 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
549 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
550 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
551 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
552 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
553 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
554 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
556 getTagName = wVarQual gHC_PRIM_Name FSLIT("getTag#") getTagIdKey
557 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
558 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
559 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
560 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
562 -- PrelBase data types and constructors
563 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
564 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
565 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
566 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
567 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
568 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
569 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
570 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
571 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
572 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
573 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
574 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
575 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
578 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
579 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
580 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
581 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
582 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
583 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
584 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
586 -- Base strings Strings
587 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
588 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
589 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
590 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
591 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
593 -- Base classes (Eq, Ord, Functor)
594 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
595 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
596 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
599 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
600 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
601 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
602 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
603 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
606 -- Random PrelBase functions
607 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
608 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
609 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
610 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
611 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
612 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
613 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
614 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
615 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
618 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
619 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
622 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
623 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
624 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
625 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
626 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
627 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
628 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
629 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
630 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
632 -- PrelReal types and classes
633 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
634 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
635 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
636 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
637 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
638 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
639 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
640 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
643 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
644 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
645 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
646 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
647 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
648 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
651 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
653 -- Enum module (Enum, Bounded)
654 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
655 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
656 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
657 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
658 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
659 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
662 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
663 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
664 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
666 -- MetaHaskell Extension, "the smart constructors"
667 -- text3 from Meta/work/gen.hs
668 intLName = varQual mETA_META_Name FSLIT("intL") intLIdKey
669 charLName = varQual mETA_META_Name FSLIT("charL") charLIdKey
670 plitName = varQual mETA_META_Name FSLIT("plit") plitIdKey
671 pvarName = varQual mETA_META_Name FSLIT("pvar") pvarIdKey
672 ptupName = varQual mETA_META_Name FSLIT("ptup") ptupIdKey
673 pconName = varQual mETA_META_Name FSLIT("pcon") pconIdKey
674 ptildeName = varQual mETA_META_Name FSLIT("ptilde") ptildeIdKey
675 paspatName = varQual mETA_META_Name FSLIT("paspat") paspatIdKey
676 pwildName = varQual mETA_META_Name FSLIT("pwild") pwildIdKey
677 varName = varQual mETA_META_Name FSLIT("var") varIdKey
678 conName = varQual mETA_META_Name FSLIT("con") conIdKey
679 litName = varQual mETA_META_Name FSLIT("lit") litIdKey
680 appName = varQual mETA_META_Name FSLIT("app") appIdKey
681 infixEName = varQual mETA_META_Name FSLIT("infixE") infixEIdKey
682 lamName = varQual mETA_META_Name FSLIT("lam") lamIdKey
683 tupName = varQual mETA_META_Name FSLIT("tup") tupIdKey
684 doEName = varQual mETA_META_Name FSLIT("doE") doEIdKey
685 compName = varQual mETA_META_Name FSLIT("comp") compIdKey
686 listExpName = varQual mETA_META_Name FSLIT("listExp") listExpIdKey
687 condName = varQual mETA_META_Name FSLIT("cond") condIdKey
688 letEName = varQual mETA_META_Name FSLIT("letE") letEIdKey
689 caseEName = varQual mETA_META_Name FSLIT("caseE") caseEIdKey
690 infixAppName = varQual mETA_META_Name FSLIT("infixApp") infixAppIdKey
691 sectionLName = varQual mETA_META_Name FSLIT("sectionL") sectionLIdKey
692 sectionRName = varQual mETA_META_Name FSLIT("sectionR") sectionRIdKey
693 guardedName = varQual mETA_META_Name FSLIT("guarded") guardedIdKey
694 normalName = varQual mETA_META_Name FSLIT("normal") normalIdKey
695 bindStName = varQual mETA_META_Name FSLIT("bindSt") bindStIdKey
696 letStName = varQual mETA_META_Name FSLIT("letSt") letStIdKey
697 noBindStName = varQual mETA_META_Name FSLIT("noBindSt") noBindStIdKey
698 parStName = varQual mETA_META_Name FSLIT("parSt") parStIdKey
699 fromName = varQual mETA_META_Name FSLIT("from") fromIdKey
700 fromThenName = varQual mETA_META_Name FSLIT("fromThen") fromThenIdKey
701 fromToName = varQual mETA_META_Name FSLIT("fromTo") fromToIdKey
702 fromThenToName = varQual mETA_META_Name FSLIT("fromThenTo") fromThenToIdKey
703 liftName = varQual mETA_META_Name FSLIT("lift") liftIdKey
704 gensymName = varQual mETA_META_Name FSLIT("gensym") gensymIdKey
705 returnQName = varQual mETA_META_Name FSLIT("returnQ") returnQIdKey
706 bindQName = varQual mETA_META_Name FSLIT("bindQ") bindQIdKey
707 funName = varQual mETA_META_Name FSLIT("fun") funIdKey
708 valName = varQual mETA_META_Name FSLIT("val") valIdKey
709 matchName = varQual mETA_META_Name FSLIT("match") matchIdKey
710 clauseName = varQual mETA_META_Name FSLIT("clause") clauseIdKey
711 protoName = varQual mETA_META_Name FSLIT("proto") protoIdKey
712 exprTyConName = tcQual mETA_META_Name FSLIT("Expr") exprTyConKey
713 declTyConName = tcQual mETA_META_Name FSLIT("Decl") declTyConKey
714 pattTyConName = tcQual mETA_META_Name FSLIT("Patt") pattTyConKey
715 mtchTyConName = tcQual mETA_META_Name FSLIT("Mtch") mtchTyConKey
716 clseTyConName = tcQual mETA_META_Name FSLIT("Clse") clseTyConKey
717 stmtTyConName = tcQual mETA_META_Name FSLIT("Stmt") stmtTyConKey
719 qTyConName = tcQual mETA_META_Name FSLIT("Q") qTyConKey
720 expTyConName = tcQual mETA_META_Name FSLIT("Exp") expTyConKey
721 matTyConName = tcQual mETA_META_Name FSLIT("Mat") matTyConKey
722 clsTyConName = tcQual mETA_META_Name FSLIT("Cls") clsTyConKey
725 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
728 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
730 -- parallel array types and functions
731 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
732 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
733 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
734 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
735 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
736 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
737 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
738 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
739 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
740 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
741 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
742 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
743 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
744 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
745 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
746 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
749 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
750 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
751 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
752 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
753 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
754 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
757 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
759 -- Int, Word, and Addr things
760 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
761 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
762 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
763 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
766 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
767 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
768 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
769 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
770 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
771 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
774 addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
775 addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
778 ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
779 ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
780 funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
781 funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
784 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
785 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
787 -- Foreign objects and weak pointers
788 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
789 stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
790 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
793 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
794 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
795 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
796 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
797 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
798 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
799 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
800 nonExhaustiveGuardsErrorName
801 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
804 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
806 -- The "split" Id for splittable implicit parameters
807 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
810 %************************************************************************
812 \subsection{Standard groups of names}
814 %************************************************************************
817 templateHaskellNames :: NameSet
818 -- The names that are implicitly mentioned by ``bracket''
819 -- Should stay in sync with the import list of DsMeta
821 = mkNameSet [ intLName,charLName, plitName, pvarName, ptupName,
822 pconName, ptildeName, paspatName, pwildName,
823 varName, conName, litName, appName, lamName,
824 tupName, doEName, compName,
825 listExpName, condName, letEName, caseEName,
826 infixAppName, guardedName, normalName,
827 bindStName, letStName, noBindStName, parStName,
828 fromName, fromThenName, fromToName, fromThenToName,
829 funName, valName, liftName,gensymName, bindQName,
830 appendName, matchName, clauseName ]
833 %************************************************************************
835 \subsection{Local helpers}
837 %************************************************************************
839 All these are original names; hence mkOrig
842 varQual = mk_known_key_name OccNameAlias.varName -- Note use of local alias vName
843 dataQual = mk_known_key_name dataName
844 tcQual = mk_known_key_name tcName
845 clsQual = mk_known_key_name clsName
847 wVarQual = mk_wired_in_name OccNameAlias.varName -- The wired-in analogues
848 wDataQual = mk_wired_in_name dataName
849 wTcQual = mk_wired_in_name tcName
851 varQual_RDR mod str = mkOrig mod (mkOccFS OccNameAlias.varName str) -- note use of local alias vName
852 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
853 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
854 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
856 mk_known_key_name space mod str uniq
857 = mkKnownKeyExternalName mod (mkOccFS space str) uniq
858 mk_wired_in_name space mod str uniq
859 = mkWiredInName (mkVanillaModule mod) (mkOccFS space str) uniq
861 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
862 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
863 -- And they don't come from any particular module; indeed we always
864 -- want to print them unqualified. Hence the LocalName
867 %************************************************************************
869 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
871 %************************************************************************
872 --MetaHaskell extension hand allocate keys here
875 boundedClassKey = mkPreludeClassUnique 1
876 enumClassKey = mkPreludeClassUnique 2
877 eqClassKey = mkPreludeClassUnique 3
878 floatingClassKey = mkPreludeClassUnique 5
879 fractionalClassKey = mkPreludeClassUnique 6
880 integralClassKey = mkPreludeClassUnique 7
881 monadClassKey = mkPreludeClassUnique 8
882 functorClassKey = mkPreludeClassUnique 10
883 numClassKey = mkPreludeClassUnique 11
884 ordClassKey = mkPreludeClassUnique 12
885 readClassKey = mkPreludeClassUnique 13
886 realClassKey = mkPreludeClassUnique 14
887 realFloatClassKey = mkPreludeClassUnique 15
888 realFracClassKey = mkPreludeClassUnique 16
889 showClassKey = mkPreludeClassUnique 17
891 cCallableClassKey = mkPreludeClassUnique 18
892 cReturnableClassKey = mkPreludeClassUnique 19
894 ixClassKey = mkPreludeClassUnique 20
897 %************************************************************************
899 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
901 %************************************************************************
904 addrPrimTyConKey = mkPreludeTyConUnique 1
905 addrTyConKey = mkPreludeTyConUnique 2
906 arrayPrimTyConKey = mkPreludeTyConUnique 3
907 boolTyConKey = mkPreludeTyConUnique 4
908 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
909 charPrimTyConKey = mkPreludeTyConUnique 7
910 charTyConKey = mkPreludeTyConUnique 8
911 doublePrimTyConKey = mkPreludeTyConUnique 9
912 doubleTyConKey = mkPreludeTyConUnique 10
913 floatPrimTyConKey = mkPreludeTyConUnique 11
914 floatTyConKey = mkPreludeTyConUnique 12
915 funTyConKey = mkPreludeTyConUnique 13
916 intPrimTyConKey = mkPreludeTyConUnique 14
917 intTyConKey = mkPreludeTyConUnique 15
918 int8TyConKey = mkPreludeTyConUnique 16
919 int16TyConKey = mkPreludeTyConUnique 17
920 int32PrimTyConKey = mkPreludeTyConUnique 18
921 int32TyConKey = mkPreludeTyConUnique 19
922 int64PrimTyConKey = mkPreludeTyConUnique 20
923 int64TyConKey = mkPreludeTyConUnique 21
924 integerTyConKey = mkPreludeTyConUnique 22
925 listTyConKey = mkPreludeTyConUnique 23
926 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
927 weakPrimTyConKey = mkPreludeTyConUnique 27
928 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
929 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
930 orderingTyConKey = mkPreludeTyConUnique 30
931 mVarPrimTyConKey = mkPreludeTyConUnique 31
932 ratioTyConKey = mkPreludeTyConUnique 32
933 rationalTyConKey = mkPreludeTyConUnique 33
934 realWorldTyConKey = mkPreludeTyConUnique 34
935 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
936 stablePtrTyConKey = mkPreludeTyConUnique 36
937 statePrimTyConKey = mkPreludeTyConUnique 50
938 stableNamePrimTyConKey = mkPreludeTyConUnique 51
939 stableNameTyConKey = mkPreludeTyConUnique 52
940 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
941 mutVarPrimTyConKey = mkPreludeTyConUnique 55
942 ioTyConKey = mkPreludeTyConUnique 56
943 byteArrayTyConKey = mkPreludeTyConUnique 57
944 wordPrimTyConKey = mkPreludeTyConUnique 58
945 wordTyConKey = mkPreludeTyConUnique 59
946 word8TyConKey = mkPreludeTyConUnique 60
947 word16TyConKey = mkPreludeTyConUnique 61
948 word32PrimTyConKey = mkPreludeTyConUnique 62
949 word32TyConKey = mkPreludeTyConUnique 63
950 word64PrimTyConKey = mkPreludeTyConUnique 64
951 word64TyConKey = mkPreludeTyConUnique 65
952 liftedConKey = mkPreludeTyConUnique 66
953 unliftedConKey = mkPreludeTyConUnique 67
954 anyBoxConKey = mkPreludeTyConUnique 68
955 kindConKey = mkPreludeTyConUnique 69
956 boxityConKey = mkPreludeTyConUnique 70
957 typeConKey = mkPreludeTyConUnique 71
958 threadIdPrimTyConKey = mkPreludeTyConUnique 72
959 bcoPrimTyConKey = mkPreludeTyConUnique 73
960 ptrTyConKey = mkPreludeTyConUnique 74
961 funPtrTyConKey = mkPreludeTyConUnique 75
963 -- Usage type constructors
964 usageConKey = mkPreludeTyConUnique 76
965 usOnceTyConKey = mkPreludeTyConUnique 77
966 usManyTyConKey = mkPreludeTyConUnique 78
968 -- Generic Type Constructors
969 crossTyConKey = mkPreludeTyConUnique 79
970 plusTyConKey = mkPreludeTyConUnique 80
971 genUnitTyConKey = mkPreludeTyConUnique 81
973 -- Parallel array type constructor
974 parrTyConKey = mkPreludeTyConUnique 82
977 qTyConKey = mkPreludeTyConUnique 83
978 exprTyConKey = mkPreludeTyConUnique 84
979 declTyConKey = mkPreludeTyConUnique 85
980 pattTyConKey = mkPreludeTyConUnique 86
981 mtchTyConKey = mkPreludeTyConUnique 87
982 clseTyConKey = mkPreludeTyConUnique 88
983 stmtTyConKey = mkPreludeTyConUnique 89
984 expTyConKey = mkPreludeTyConUnique 90
985 matTyConKey = mkPreludeTyConUnique 91
986 clsTyConKey = mkPreludeTyConUnique 92
988 unitTyConKey = mkTupleTyConUnique Boxed 0
991 %************************************************************************
993 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
995 %************************************************************************
998 addrDataConKey = mkPreludeDataConUnique 0
999 charDataConKey = mkPreludeDataConUnique 1
1000 consDataConKey = mkPreludeDataConUnique 2
1001 doubleDataConKey = mkPreludeDataConUnique 3
1002 falseDataConKey = mkPreludeDataConUnique 4
1003 floatDataConKey = mkPreludeDataConUnique 5
1004 intDataConKey = mkPreludeDataConUnique 6
1005 smallIntegerDataConKey = mkPreludeDataConUnique 7
1006 largeIntegerDataConKey = mkPreludeDataConUnique 8
1007 nilDataConKey = mkPreludeDataConUnique 11
1008 ratioDataConKey = mkPreludeDataConUnique 12
1009 stablePtrDataConKey = mkPreludeDataConUnique 13
1010 stableNameDataConKey = mkPreludeDataConUnique 14
1011 trueDataConKey = mkPreludeDataConUnique 15
1012 wordDataConKey = mkPreludeDataConUnique 16
1013 ioDataConKey = mkPreludeDataConUnique 17
1014 ptrDataConKey = mkPreludeDataConUnique 18
1015 funPtrDataConKey = mkPreludeDataConUnique 19
1017 -- Generic data constructors
1018 crossDataConKey = mkPreludeDataConUnique 20
1019 inlDataConKey = mkPreludeDataConUnique 21
1020 inrDataConKey = mkPreludeDataConUnique 22
1021 genUnitDataConKey = mkPreludeDataConUnique 23
1023 -- Data constructor for parallel arrays
1024 parrDataConKey = mkPreludeDataConUnique 24
1027 %************************************************************************
1029 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1031 %************************************************************************
1034 absentErrorIdKey = mkPreludeMiscIdUnique 1
1035 getTagIdKey = mkPreludeMiscIdUnique 2
1036 augmentIdKey = mkPreludeMiscIdUnique 3
1037 appendIdKey = mkPreludeMiscIdUnique 4
1038 buildIdKey = mkPreludeMiscIdUnique 5
1039 errorIdKey = mkPreludeMiscIdUnique 6
1040 foldlIdKey = mkPreludeMiscIdUnique 7
1041 foldrIdKey = mkPreludeMiscIdUnique 8
1042 recSelErrorIdKey = mkPreludeMiscIdUnique 9
1043 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
1044 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
1045 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
1046 integerZeroIdKey = mkPreludeMiscIdUnique 13
1047 int2IntegerIdKey = mkPreludeMiscIdUnique 14
1048 seqIdKey = mkPreludeMiscIdUnique 15
1049 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
1050 eqStringIdKey = mkPreludeMiscIdUnique 17
1051 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
1052 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1053 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
1054 parErrorIdKey = mkPreludeMiscIdUnique 21
1055 parIdKey = mkPreludeMiscIdUnique 22
1056 patErrorIdKey = mkPreludeMiscIdUnique 23
1057 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
1058 recConErrorIdKey = mkPreludeMiscIdUnique 25
1059 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
1060 traceIdKey = mkPreludeMiscIdUnique 27
1061 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
1062 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
1063 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
1064 unpackCStringIdKey = mkPreludeMiscIdUnique 31
1066 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
1067 concatIdKey = mkPreludeMiscIdUnique 33
1068 filterIdKey = mkPreludeMiscIdUnique 34
1069 zipIdKey = mkPreludeMiscIdUnique 35
1070 bindIOIdKey = mkPreludeMiscIdUnique 36
1071 returnIOIdKey = mkPreludeMiscIdUnique 37
1072 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
1073 newStablePtrIdKey = mkPreludeMiscIdUnique 39
1074 plusIntegerIdKey = mkPreludeMiscIdUnique 41
1075 timesIntegerIdKey = mkPreludeMiscIdUnique 42
1076 printIdKey = mkPreludeMiscIdUnique 43
1077 failIOIdKey = mkPreludeMiscIdUnique 44
1078 nullAddrIdKey = mkPreludeMiscIdUnique 46
1079 voidArgIdKey = mkPreludeMiscIdUnique 47
1080 splitIdKey = mkPreludeMiscIdUnique 48
1081 fstIdKey = mkPreludeMiscIdUnique 49
1082 sndIdKey = mkPreludeMiscIdUnique 50
1083 otherwiseIdKey = mkPreludeMiscIdUnique 51
1084 assertIdKey = mkPreludeMiscIdUnique 53
1085 runSTRepIdKey = mkPreludeMiscIdUnique 54
1087 dollarMainKey = mkPreludeMiscIdUnique 55
1088 runMainKey = mkPreludeMiscIdUnique 56
1090 andIdKey = mkPreludeMiscIdUnique 57
1091 orIdKey = mkPreludeMiscIdUnique 58
1092 thenIOIdKey = mkPreludeMiscIdUnique 59
1093 lazyIdKey = mkPreludeMiscIdUnique 60
1095 -- Parallel array functions
1096 nullPIdKey = mkPreludeMiscIdUnique 80
1097 lengthPIdKey = mkPreludeMiscIdUnique 81
1098 replicatePIdKey = mkPreludeMiscIdUnique 82
1099 mapPIdKey = mkPreludeMiscIdUnique 83
1100 filterPIdKey = mkPreludeMiscIdUnique 84
1101 zipPIdKey = mkPreludeMiscIdUnique 85
1102 crossPIdKey = mkPreludeMiscIdUnique 86
1103 indexPIdKey = mkPreludeMiscIdUnique 87
1104 toPIdKey = mkPreludeMiscIdUnique 88
1105 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1106 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1107 bpermutePIdKey = mkPreludeMiscIdUnique 91
1108 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
1109 indexOfPIdKey = mkPreludeMiscIdUnique 93
1112 Certain class operations from Prelude classes. They get their own
1113 uniques so we can look them up easily when we want to conjure them up
1114 during type checking.
1117 -- Just a place holder for unbound variables produced by the renamer:
1118 unboundKey = mkPreludeMiscIdUnique 101
1120 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1121 minusClassOpKey = mkPreludeMiscIdUnique 103
1122 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1123 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1124 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1125 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1126 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1127 eqClassOpKey = mkPreludeMiscIdUnique 109
1128 geClassOpKey = mkPreludeMiscIdUnique 110
1129 negateClassOpKey = mkPreludeMiscIdUnique 111
1130 failMClassOpKey = mkPreludeMiscIdUnique 112
1131 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1132 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1133 returnMClassOpKey = mkPreludeMiscIdUnique 117
1135 -- MetaHaskell Extension, (text4 118) from Meta/work/gen.hs
1136 intLIdKey = mkPreludeMiscIdUnique 118
1137 charLIdKey = mkPreludeMiscIdUnique 119
1138 plitIdKey = mkPreludeMiscIdUnique 120
1139 pvarIdKey = mkPreludeMiscIdUnique 121
1140 ptupIdKey = mkPreludeMiscIdUnique 122
1141 pconIdKey = mkPreludeMiscIdUnique 123
1142 ptildeIdKey = mkPreludeMiscIdUnique 124
1143 paspatIdKey = mkPreludeMiscIdUnique 125
1144 pwildIdKey = mkPreludeMiscIdUnique 126
1145 varIdKey = mkPreludeMiscIdUnique 127
1146 conIdKey = mkPreludeMiscIdUnique 128
1147 litIdKey = mkPreludeMiscIdUnique 129
1148 appIdKey = mkPreludeMiscIdUnique 130
1149 infixEIdKey = mkPreludeMiscIdUnique 131
1150 lamIdKey = mkPreludeMiscIdUnique 132
1151 tupIdKey = mkPreludeMiscIdUnique 133
1152 doEIdKey = mkPreludeMiscIdUnique 134
1153 compIdKey = mkPreludeMiscIdUnique 135
1154 listExpIdKey = mkPreludeMiscIdUnique 137
1155 condIdKey = mkPreludeMiscIdUnique 138
1156 letEIdKey = mkPreludeMiscIdUnique 139
1157 caseEIdKey = mkPreludeMiscIdUnique 140
1158 infixAppIdKey = mkPreludeMiscIdUnique 141
1159 sectionLIdKey = mkPreludeMiscIdUnique 142
1160 sectionRIdKey = mkPreludeMiscIdUnique 143
1161 guardedIdKey = mkPreludeMiscIdUnique 144
1162 normalIdKey = mkPreludeMiscIdUnique 145
1163 bindStIdKey = mkPreludeMiscIdUnique 146
1164 letStIdKey = mkPreludeMiscIdUnique 147
1165 noBindStIdKey = mkPreludeMiscIdUnique 148
1166 parStIdKey = mkPreludeMiscIdUnique 149
1167 fromIdKey = mkPreludeMiscIdUnique 150
1168 fromThenIdKey = mkPreludeMiscIdUnique 151
1169 fromToIdKey = mkPreludeMiscIdUnique 152
1170 fromThenToIdKey = mkPreludeMiscIdUnique 153
1171 liftIdKey = mkPreludeMiscIdUnique 154
1172 gensymIdKey = mkPreludeMiscIdUnique 155
1173 returnQIdKey = mkPreludeMiscIdUnique 156
1174 bindQIdKey = mkPreludeMiscIdUnique 157
1175 funIdKey = mkPreludeMiscIdUnique 158
1176 valIdKey = mkPreludeMiscIdUnique 159
1177 protoIdKey = mkPreludeMiscIdUnique 160
1178 matchIdKey = mkPreludeMiscIdUnique 161
1179 clauseIdKey = mkPreludeMiscIdUnique 162
1183 %************************************************************************
1185 \subsection{Standard groups of types}
1187 %************************************************************************
1199 -- Renamer always imports these data decls replete with constructors
1200 -- so that desugarer can always see their constructors. Ugh!
1205 , mutableByteArrayTyConKey
1219 %************************************************************************
1221 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1223 %************************************************************************
1225 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1226 even though every numeric class has these two as a superclass,
1227 because the list of ambiguous dictionaries hasn't been simplified.
1235 ++ fractionalClassKeys
1237 fractionalClassKeys =
1238 [ fractionalClassKey
1244 -- the strictness analyser needs to know about numeric types
1245 -- (see SaAbsInt.lhs)
1246 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1252 , cReturnableClassKey
1256 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1258 -- We have to have "CCallable" and "CReturnable" in the standard
1259 -- classes, so that if you go...
1261 -- _ccall_ foo ... 93{-numeric literal-} ...
1263 -- ... it can do The Right Thing on the 93.
1265 noDictClassKeys -- These classes are used only for type annotations;
1266 -- they are not implemented by dictionaries, ever.
1270 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1275 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1276 boundedClassKey, showClassKey, readClassKey ]