2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules and names}
7 Nota Bene: all Names defined in here should come from the base package
9 * ModuleNames for prelude modules,
10 e.g. pREL_BASE_Name :: ModuleName
12 * Modules for prelude modules
13 e.g. pREL_Base :: Module
15 * Uniques for Ids, DataCons, TyCons and Classes that the compiler
16 "knows about" in some way
17 e.g. intTyConKey :: Unique
18 minusClassOpKey :: Unique
20 * Names for Ids, DataCons, TyCons and Classes that the compiler
21 "knows about" in some way
22 e.g. intTyConName :: Name
24 One of these Names contains
25 (a) the module and occurrence name of the thing
27 The may way the compiler "knows about" one of these things is
28 where the type checker or desugarer needs to look it up. For
29 example, when desugaring list comprehensions the desugarer
30 needs to conjure up 'foldr'. It does this by looking up
31 foldrName in the environment.
33 * RdrNames for Ids, DataCons etc that the compiler may emit into
34 generated code (e.g. for deriving). It's not necessary to know
35 the uniques for these guys, only their names
40 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
42 -----------------------------------------------------------
43 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
44 -- (b) Uniques e.g. intTyConKey
45 -- (c) Groups of classes and types
46 -- (d) miscellaneous things
47 -- So many that we export them all
50 #include "HsVersions.h"
53 import Module ( Module, ModuleName, mkModule, mkModuleNameFS )
54 import OccName ( dataName, tcName, clsName, varName, mkOccNameFS,
56 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
57 import Unique ( Unique, Uniquable(..), hasKey,
58 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
59 mkPreludeTyConUnique, mkPreludeClassUnique,
62 import BasicTypes ( Boxity(..), Arity )
63 import Name ( Name, mkInternalName, mkExternalName )
69 %************************************************************************
71 \subsection{Local Names}
73 %************************************************************************
75 This *local* name is used by the interactive stuff
78 itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcSpan
82 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
83 -- during compiler debugging.
84 mkUnboundName :: RdrName -> Name
85 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan
87 isUnboundName :: Name -> Bool
88 isUnboundName name = name `hasKey` unboundKey
92 %************************************************************************
94 \subsection{Known key Names}
96 %************************************************************************
98 This section tells what the compiler knows about the assocation of
99 names with uniques. These ones are the *non* wired-in ones. The
100 wired in ones are defined in TysWiredIn etc.
103 basicKnownKeyNames :: [Name]
106 ++ typeableClassNames
108 ++ [ -- Type constructors (synonyms especially)
109 ioTyConName, ioDataConName,
116 integerTyConName, smallIntegerDataConName, largeIntegerDataConName,
118 -- Classes. *Must* include:
119 -- classes that are grabbed by key (e.g., eqClassKey)
120 -- classes in "Class.standardClassKeys" (quite a few)
121 eqClassName, -- mentioned, derivable
122 ordClassName, -- derivable
123 boundedClassName, -- derivable
124 numClassName, -- mentioned, numeric
125 enumClassName, -- derivable
128 realClassName, -- numeric
129 integralClassName, -- numeric
130 fractionalClassName, -- numeric
131 floatingClassName, -- numeric
132 realFracClassName, -- numeric
133 realFloatClassName, -- numeric
138 negateName, minusName,
139 fromRationalName, fromIntegerName,
146 enumFromName, enumFromThenName,
147 enumFromThenToName, enumFromToName,
148 enumFromToPName, enumFromThenToPName,
151 thenIOName, bindIOName, returnIOName, failIOName,
152 failMName, bindMName, thenMName, returnMName,
158 arrAName, composeAName, firstAName,
159 appAName, choiceAName, loopAName,
174 unpackCStringName, unpackCStringAppendName,
175 unpackCStringFoldrName, unpackCStringUtf8Name,
178 concatName, filterName,
179 zipName, foldrName, buildName, augmentName, appendName,
181 -- Parallel array operations
182 nullPName, lengthPName, replicatePName, mapPName,
183 filterPName, zipPName, crossMapPName, indexPName,
184 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
186 -- FFI primitive types that are not wired-in.
187 stablePtrTyConName, ptrTyConName, funPtrTyConName,
188 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
189 wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
192 otherwiseIdName, inlineIdName,
193 plusIntegerName, timesIntegerName,
194 eqStringName, assertName, breakpointName, breakpointCondName,
195 breakpointAutoName, opaqueTyConName,
196 assertErrorName, runSTRepName,
197 printName, fstName, sndName,
200 monadFixClassName, mfixName,
203 randomClassName, randomGenClassName, monadPlusClassName,
209 , eitherTyConName, leftDataConName, rightDataConName
212 , objectTyConName, marshalObjectName, unmarshalObjectName
213 , marshalStringName, unmarshalStringName, checkDotnetResName
216 genericTyConNames :: [Name]
217 genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
220 ndpNames = [ parrayTyConName, paTyConName, preprTyConName, prTyConName
221 , parrayIntPrimTyConName
224 , mkClosureName, applyClosureName
225 , mkClosurePName, applyClosurePName
226 , lengthPAName, replicatePAName, emptyPAName, packPAName,
231 %************************************************************************
233 \subsection{Module names}
235 %************************************************************************
238 --MetaHaskell Extension Add a new module here
240 pRELUDE = mkBaseModule_ pRELUDE_NAME
241 gHC_PRIM = mkBaseModule FSLIT("GHC.Prim") -- Primitive types and values
242 gHC_BASE = mkBaseModule FSLIT("GHC.Base")
243 gHC_ENUM = mkBaseModule FSLIT("GHC.Enum")
244 gHC_SHOW = mkBaseModule FSLIT("GHC.Show")
245 gHC_READ = mkBaseModule FSLIT("GHC.Read")
246 gHC_NUM = mkBaseModule FSLIT("GHC.Num")
247 gHC_LIST = mkBaseModule FSLIT("GHC.List")
248 gHC_PARR = mkBaseModule FSLIT("GHC.PArr")
249 dATA_TUP = mkBaseModule FSLIT("Data.Tuple")
250 dATA_EITHER = mkBaseModule FSLIT("Data.Either")
251 dATA_STRING = mkBaseModule FSLIT("Data.String")
252 gHC_PACK = mkBaseModule FSLIT("GHC.Pack")
253 gHC_CONC = mkBaseModule FSLIT("GHC.Conc")
254 gHC_IO_BASE = mkBaseModule FSLIT("GHC.IOBase")
255 gHC_ST = mkBaseModule FSLIT("GHC.ST")
256 gHC_ARR = mkBaseModule FSLIT("GHC.Arr")
257 gHC_STABLE = mkBaseModule FSLIT("GHC.Stable")
258 gHC_ADDR = mkBaseModule FSLIT("GHC.Addr")
259 gHC_PTR = mkBaseModule FSLIT("GHC.Ptr")
260 gHC_ERR = mkBaseModule FSLIT("GHC.Err")
261 gHC_REAL = mkBaseModule FSLIT("GHC.Real")
262 gHC_FLOAT = mkBaseModule FSLIT("GHC.Float")
263 gHC_TOP_HANDLER = mkBaseModule FSLIT("GHC.TopHandler")
264 sYSTEM_IO = mkBaseModule FSLIT("System.IO")
265 dYNAMIC = mkBaseModule FSLIT("Data.Dynamic")
266 tYPEABLE = mkBaseModule FSLIT("Data.Typeable")
267 gENERICS = mkBaseModule FSLIT("Data.Generics.Basics")
268 dOTNET = mkBaseModule FSLIT("GHC.Dotnet")
269 rEAD_PREC = mkBaseModule FSLIT("Text.ParserCombinators.ReadPrec")
270 lEX = mkBaseModule FSLIT("Text.Read.Lex")
271 gHC_INT = mkBaseModule FSLIT("GHC.Int")
272 gHC_WORD = mkBaseModule FSLIT("GHC.Word")
273 mONAD = mkBaseModule FSLIT("Control.Monad")
274 mONAD_FIX = mkBaseModule FSLIT("Control.Monad.Fix")
275 aRROW = mkBaseModule FSLIT("Control.Arrow")
276 rANDOM = mkBaseModule FSLIT("System.Random")
277 gLA_EXTS = mkBaseModule FSLIT("GHC.Exts")
279 nDP_PARRAY = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.PArray")
280 nDP_REPR = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Repr")
281 nDP_CLOSURE = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
282 nDP_PRIM = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Prim")
283 nDP_INSTANCES = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Instances")
285 mAIN = mkMainModule_ mAIN_NAME
286 rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
288 -- The ':xxx' makes a module name that the user can never
289 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
290 -- module name still starts with a capital letter, which keeps
291 -- the z-encoded version consistent.
292 iNTERACTIVE = mkMainModule FSLIT(":Interactive")
293 thFAKE = mkMainModule FSLIT(":THFake")
295 pRELUDE_NAME = mkModuleNameFS FSLIT("Prelude")
296 mAIN_NAME = mkModuleNameFS FSLIT("Main")
298 mkBaseModule :: FastString -> Module
299 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
301 mkBaseModule_ :: ModuleName -> Module
302 mkBaseModule_ m = mkModule basePackageId m
304 mkNDPModule :: FastString -> Module
305 mkNDPModule m = mkModule ndpPackageId (mkModuleNameFS m)
307 mkNDPModule_ :: ModuleName -> Module
308 mkNDPModule_ m = mkModule ndpPackageId m
310 mkMainModule :: FastString -> Module
311 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
313 mkMainModule_ :: ModuleName -> Module
314 mkMainModule_ m = mkModule mainPackageId m
317 %************************************************************************
319 \subsection{Constructing the names of tuples
321 %************************************************************************
324 mkTupleModule :: Boxity -> Arity -> Module
325 mkTupleModule Boxed 0 = gHC_BASE
326 mkTupleModule Boxed _ = dATA_TUP
327 mkTupleModule Unboxed _ = gHC_PRIM
331 %************************************************************************
335 %************************************************************************
338 main_RDR_Unqual = mkUnqual varName FSLIT("main")
339 -- We definitely don't want an Orig RdrName, because
340 -- main might, in principle, be imported into module Main
342 eq_RDR = nameRdrName eqName
343 ge_RDR = nameRdrName geName
344 ne_RDR = varQual_RDR gHC_BASE FSLIT("/=")
345 le_RDR = varQual_RDR gHC_BASE FSLIT("<=")
346 gt_RDR = varQual_RDR gHC_BASE FSLIT(">")
347 compare_RDR = varQual_RDR gHC_BASE FSLIT("compare")
348 ltTag_RDR = dataQual_RDR gHC_BASE FSLIT("LT")
349 eqTag_RDR = dataQual_RDR gHC_BASE FSLIT("EQ")
350 gtTag_RDR = dataQual_RDR gHC_BASE FSLIT("GT")
352 eqClass_RDR = nameRdrName eqClassName
353 numClass_RDR = nameRdrName numClassName
354 ordClass_RDR = nameRdrName ordClassName
355 enumClass_RDR = nameRdrName enumClassName
356 monadClass_RDR = nameRdrName monadClassName
358 map_RDR = varQual_RDR gHC_BASE FSLIT("map")
359 append_RDR = varQual_RDR gHC_BASE FSLIT("++")
361 foldr_RDR = nameRdrName foldrName
362 build_RDR = nameRdrName buildName
363 returnM_RDR = nameRdrName returnMName
364 bindM_RDR = nameRdrName bindMName
365 failM_RDR = nameRdrName failMName
367 and_RDR = nameRdrName andName
369 left_RDR = nameRdrName leftDataConName
370 right_RDR = nameRdrName rightDataConName
372 fromEnum_RDR = varQual_RDR gHC_ENUM FSLIT("fromEnum")
373 toEnum_RDR = varQual_RDR gHC_ENUM FSLIT("toEnum")
375 enumFrom_RDR = nameRdrName enumFromName
376 enumFromTo_RDR = nameRdrName enumFromToName
377 enumFromThen_RDR = nameRdrName enumFromThenName
378 enumFromThenTo_RDR = nameRdrName enumFromThenToName
380 ratioDataCon_RDR = nameRdrName ratioDataConName
381 plusInteger_RDR = nameRdrName plusIntegerName
382 timesInteger_RDR = nameRdrName timesIntegerName
384 ioDataCon_RDR = nameRdrName ioDataConName
386 eqString_RDR = nameRdrName eqStringName
387 unpackCString_RDR = nameRdrName unpackCStringName
388 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
389 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
391 newStablePtr_RDR = nameRdrName newStablePtrName
392 wordDataCon_RDR = dataQual_RDR gHC_WORD FSLIT("W#")
394 bindIO_RDR = nameRdrName bindIOName
395 returnIO_RDR = nameRdrName returnIOName
397 fromInteger_RDR = nameRdrName fromIntegerName
398 fromRational_RDR = nameRdrName fromRationalName
399 minus_RDR = nameRdrName minusName
400 times_RDR = varQual_RDR gHC_NUM FSLIT("*")
401 plus_RDR = varQual_RDR gHC_NUM FSLIT("+")
403 fromString_RDR = nameRdrName fromStringName
405 compose_RDR = varQual_RDR gHC_BASE FSLIT(".")
407 not_RDR = varQual_RDR gHC_BASE FSLIT("not")
408 getTag_RDR = varQual_RDR gHC_BASE FSLIT("getTag")
409 succ_RDR = varQual_RDR gHC_ENUM FSLIT("succ")
410 pred_RDR = varQual_RDR gHC_ENUM FSLIT("pred")
411 minBound_RDR = varQual_RDR gHC_ENUM FSLIT("minBound")
412 maxBound_RDR = varQual_RDR gHC_ENUM FSLIT("maxBound")
413 range_RDR = varQual_RDR gHC_ARR FSLIT("range")
414 inRange_RDR = varQual_RDR gHC_ARR FSLIT("inRange")
415 index_RDR = varQual_RDR gHC_ARR FSLIT("index")
416 unsafeIndex_RDR = varQual_RDR gHC_ARR FSLIT("unsafeIndex")
417 unsafeRangeSize_RDR = varQual_RDR gHC_ARR FSLIT("unsafeRangeSize")
419 readList_RDR = varQual_RDR gHC_READ FSLIT("readList")
420 readListDefault_RDR = varQual_RDR gHC_READ FSLIT("readListDefault")
421 readListPrec_RDR = varQual_RDR gHC_READ FSLIT("readListPrec")
422 readListPrecDefault_RDR = varQual_RDR gHC_READ FSLIT("readListPrecDefault")
423 readPrec_RDR = varQual_RDR gHC_READ FSLIT("readPrec")
424 parens_RDR = varQual_RDR gHC_READ FSLIT("parens")
425 choose_RDR = varQual_RDR gHC_READ FSLIT("choose")
426 lexP_RDR = varQual_RDR gHC_READ FSLIT("lexP")
428 punc_RDR = dataQual_RDR lEX FSLIT("Punc")
429 ident_RDR = dataQual_RDR lEX FSLIT("Ident")
430 symbol_RDR = dataQual_RDR lEX FSLIT("Symbol")
432 step_RDR = varQual_RDR rEAD_PREC FSLIT("step")
433 alt_RDR = varQual_RDR rEAD_PREC FSLIT("+++")
434 reset_RDR = varQual_RDR rEAD_PREC FSLIT("reset")
435 prec_RDR = varQual_RDR rEAD_PREC FSLIT("prec")
437 showList_RDR = varQual_RDR gHC_SHOW FSLIT("showList")
438 showList___RDR = varQual_RDR gHC_SHOW FSLIT("showList__")
439 showsPrec_RDR = varQual_RDR gHC_SHOW FSLIT("showsPrec")
440 showString_RDR = varQual_RDR gHC_SHOW FSLIT("showString")
441 showSpace_RDR = varQual_RDR gHC_SHOW FSLIT("showSpace")
442 showParen_RDR = varQual_RDR gHC_SHOW FSLIT("showParen")
444 typeOf_RDR = varQual_RDR tYPEABLE FSLIT("typeOf")
445 mkTypeRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyConApp")
446 mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon")
448 undefined_RDR = varQual_RDR gHC_ERR FSLIT("undefined")
450 crossDataCon_RDR = dataQual_RDR gHC_BASE FSLIT(":*:")
451 inlDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inl")
452 inrDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inr")
453 genUnitDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Unit")
455 ----------------------
456 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
457 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
458 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
459 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
462 %************************************************************************
464 \subsection{Known-key names}
466 %************************************************************************
468 Many of these Names are not really "built in", but some parts of the
469 compiler (notably the deriving mechanism) need to mention their names,
470 and it's convenient to write them all down in one place.
472 --MetaHaskell Extension add the constrs and the lower case case
473 -- guys as well (perhaps) e.g. see trueDataConName below
477 runMainIOName = varQual gHC_TOP_HANDLER FSLIT("runMainIO") runMainKey
479 orderingTyConName = tcQual gHC_BASE FSLIT("Ordering") orderingTyConKey
481 eitherTyConName = tcQual dATA_EITHER FSLIT("Either") eitherTyConKey
482 leftDataConName = conName dATA_EITHER FSLIT("Left") leftDataConKey
483 rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey
486 crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey
487 plusTyConName = tcQual gHC_BASE FSLIT(":+:") plusTyConKey
488 genUnitTyConName = tcQual gHC_BASE FSLIT("Unit") genUnitTyConKey
490 -- Base strings Strings
491 unpackCStringName = varQual gHC_BASE FSLIT("unpackCString#") unpackCStringIdKey
492 unpackCStringAppendName = varQual gHC_BASE FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
493 unpackCStringFoldrName = varQual gHC_BASE FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
494 unpackCStringUtf8Name = varQual gHC_BASE FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
495 eqStringName = varQual gHC_BASE FSLIT("eqString") eqStringIdKey
496 stringTyConName = tcQual gHC_BASE FSLIT("String") stringTyConKey
498 -- The 'inline' function
499 inlineIdName = varQual gHC_BASE FSLIT("inline") inlineIdKey
501 -- Base classes (Eq, Ord, Functor)
502 eqClassName = clsQual gHC_BASE FSLIT("Eq") eqClassKey
503 eqName = methName gHC_BASE FSLIT("==") eqClassOpKey
504 ordClassName = clsQual gHC_BASE FSLIT("Ord") ordClassKey
505 geName = methName gHC_BASE FSLIT(">=") geClassOpKey
506 functorClassName = clsQual gHC_BASE FSLIT("Functor") functorClassKey
509 monadClassName = clsQual gHC_BASE FSLIT("Monad") monadClassKey
510 thenMName = methName gHC_BASE FSLIT(">>") thenMClassOpKey
511 bindMName = methName gHC_BASE FSLIT(">>=") bindMClassOpKey
512 returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey
513 failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey
515 -- Random PrelBase functions
516 fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey
517 otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey
518 foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey
519 buildName = varQual gHC_BASE FSLIT("build") buildIdKey
520 augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey
521 appendName = varQual gHC_BASE FSLIT("++") appendIdKey
522 andName = varQual gHC_BASE FSLIT("&&") andIdKey
523 orName = varQual gHC_BASE FSLIT("||") orIdKey
524 assertName = varQual gHC_BASE FSLIT("assert") assertIdKey
525 breakpointName = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
526 breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
527 breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
528 opaqueTyConName = tcQual gHC_BASE FSLIT("Opaque") opaqueTyConKey
533 (mkOccNameFS varName FSLIT("breakpointJump"))
535 breakpointCondJumpName
537 breakpointCondJumpIdKey
538 (mkOccNameFS varName FSLIT("breakpointCondJump"))
540 breakpointAutoJumpName
542 breakpointAutoJumpIdKey
543 (mkOccNameFS varName FSLIT("breakpointAutoJump"))
547 fstName = varQual dATA_TUP FSLIT("fst") fstIdKey
548 sndName = varQual dATA_TUP FSLIT("snd") sndIdKey
551 numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey
552 fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
553 minusName = methName gHC_NUM FSLIT("-") minusClassOpKey
554 negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey
555 plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
556 timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
557 integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
558 smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
559 largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
561 -- PrelReal types and classes
562 rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
563 ratioTyConName = tcQual gHC_REAL FSLIT("Ratio") ratioTyConKey
564 ratioDataConName = conName gHC_REAL FSLIT(":%") ratioDataConKey
565 realClassName = clsQual gHC_REAL FSLIT("Real") realClassKey
566 integralClassName = clsQual gHC_REAL FSLIT("Integral") integralClassKey
567 realFracClassName = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
568 fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
569 fromRationalName = methName gHC_REAL FSLIT("fromRational") fromRationalClassOpKey
572 floatingClassName = clsQual gHC_FLOAT FSLIT("Floating") floatingClassKey
573 realFloatClassName = clsQual gHC_FLOAT FSLIT("RealFloat") realFloatClassKey
576 ixClassName = clsQual gHC_ARR FSLIT("Ix") ixClassKey
579 typeableClassName = clsQual tYPEABLE FSLIT("Typeable") typeableClassKey
580 typeable1ClassName = clsQual tYPEABLE FSLIT("Typeable1") typeable1ClassKey
581 typeable2ClassName = clsQual tYPEABLE FSLIT("Typeable2") typeable2ClassKey
582 typeable3ClassName = clsQual tYPEABLE FSLIT("Typeable3") typeable3ClassKey
583 typeable4ClassName = clsQual tYPEABLE FSLIT("Typeable4") typeable4ClassKey
584 typeable5ClassName = clsQual tYPEABLE FSLIT("Typeable5") typeable5ClassKey
585 typeable6ClassName = clsQual tYPEABLE FSLIT("Typeable6") typeable6ClassKey
586 typeable7ClassName = clsQual tYPEABLE FSLIT("Typeable7") typeable7ClassKey
588 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
589 , typeable3ClassName, typeable4ClassName, typeable5ClassName
590 , typeable6ClassName, typeable7ClassName ]
593 dataClassName = clsQual gENERICS FSLIT("Data") dataClassKey
596 assertErrorName = varQual gHC_ERR FSLIT("assertError") assertErrorIdKey
598 -- Enum module (Enum, Bounded)
599 enumClassName = clsQual gHC_ENUM FSLIT("Enum") enumClassKey
600 enumFromName = methName gHC_ENUM FSLIT("enumFrom") enumFromClassOpKey
601 enumFromToName = methName gHC_ENUM FSLIT("enumFromTo") enumFromToClassOpKey
602 enumFromThenName = methName gHC_ENUM FSLIT("enumFromThen") enumFromThenClassOpKey
603 enumFromThenToName = methName gHC_ENUM FSLIT("enumFromThenTo") enumFromThenToClassOpKey
604 boundedClassName = clsQual gHC_ENUM FSLIT("Bounded") boundedClassKey
607 concatName = varQual gHC_LIST FSLIT("concat") concatIdKey
608 filterName = varQual gHC_LIST FSLIT("filter") filterIdKey
609 zipName = varQual gHC_LIST FSLIT("zip") zipIdKey
612 showClassName = clsQual gHC_SHOW FSLIT("Show") showClassKey
615 readClassName = clsQual gHC_READ FSLIT("Read") readClassKey
617 -- parallel array types and functions
618 enumFromToPName = varQual gHC_PARR FSLIT("enumFromToP") enumFromToPIdKey
619 enumFromThenToPName= varQual gHC_PARR FSLIT("enumFromThenToP") enumFromThenToPIdKey
620 nullPName = varQual gHC_PARR FSLIT("nullP") nullPIdKey
621 lengthPName = varQual gHC_PARR FSLIT("lengthP") lengthPIdKey
622 replicatePName = varQual gHC_PARR FSLIT("replicateP") replicatePIdKey
623 mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey
624 filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey
625 zipPName = varQual gHC_PARR FSLIT("zipP") zipPIdKey
626 crossMapPName = varQual gHC_PARR FSLIT("crossMapP") crossMapPIdKey
627 indexPName = varQual gHC_PARR FSLIT("!:") indexPIdKey
628 toPName = varQual gHC_PARR FSLIT("toP") toPIdKey
629 bpermutePName = varQual gHC_PARR FSLIT("bpermuteP") bpermutePIdKey
630 bpermuteDftPName = varQual gHC_PARR FSLIT("bpermuteDftP") bpermuteDftPIdKey
631 indexOfPName = varQual gHC_PARR FSLIT("indexOfP") indexOfPIdKey
634 ioTyConName = tcQual gHC_IO_BASE FSLIT("IO") ioTyConKey
635 ioDataConName = conName gHC_IO_BASE FSLIT("IO") ioDataConKey
636 thenIOName = varQual gHC_IO_BASE FSLIT("thenIO") thenIOIdKey
637 bindIOName = varQual gHC_IO_BASE FSLIT("bindIO") bindIOIdKey
638 returnIOName = varQual gHC_IO_BASE FSLIT("returnIO") returnIOIdKey
639 failIOName = varQual gHC_IO_BASE FSLIT("failIO") failIOIdKey
642 printName = varQual sYSTEM_IO FSLIT("print") printIdKey
644 -- Int, Word, and Addr things
645 int8TyConName = tcQual gHC_INT FSLIT("Int8") int8TyConKey
646 int16TyConName = tcQual gHC_INT FSLIT("Int16") int16TyConKey
647 int32TyConName = tcQual gHC_INT FSLIT("Int32") int32TyConKey
648 int64TyConName = tcQual gHC_INT FSLIT("Int64") int64TyConKey
651 word8TyConName = tcQual gHC_WORD FSLIT("Word8") word8TyConKey
652 word16TyConName = tcQual gHC_WORD FSLIT("Word16") word16TyConKey
653 word32TyConName = tcQual gHC_WORD FSLIT("Word32") word32TyConKey
654 word64TyConName = tcQual gHC_WORD FSLIT("Word64") word64TyConKey
655 wordTyConName = tcQual gHC_WORD FSLIT("Word") wordTyConKey
656 wordDataConName = conName gHC_WORD FSLIT("W#") wordDataConKey
659 ptrTyConName = tcQual gHC_PTR FSLIT("Ptr") ptrTyConKey
660 funPtrTyConName = tcQual gHC_PTR FSLIT("FunPtr") funPtrTyConKey
662 -- Foreign objects and weak pointers
663 stablePtrTyConName = tcQual gHC_STABLE FSLIT("StablePtr") stablePtrTyConKey
664 newStablePtrName = varQual gHC_STABLE FSLIT("newStablePtr") newStablePtrIdKey
667 runSTRepName = varQual gHC_ST FSLIT("runSTRep") runSTRepIdKey
669 -- Recursive-do notation
670 monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
671 mfixName = methName mONAD_FIX FSLIT("mfix") mfixIdKey
674 arrAName = varQual aRROW FSLIT("arr") arrAIdKey
675 composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
676 firstAName = varQual aRROW FSLIT("first") firstAIdKey
677 appAName = varQual aRROW FSLIT("app") appAIdKey
678 choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
679 loopAName = varQual aRROW FSLIT("loop") loopAIdKey
681 -- Other classes, needed for type defaulting
682 monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey
683 randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey
684 randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
685 isStringClassName = clsQual dATA_STRING FSLIT("IsString") isStringClassKey
688 objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey
689 -- objectTyConName was "wTcQual", but that's gone now, and
690 -- I can't see why it was wired in anyway...
691 unmarshalObjectName = varQual dOTNET FSLIT("unmarshalObject") unmarshalObjectIdKey
692 marshalObjectName = varQual dOTNET FSLIT("marshalObject") marshalObjectIdKey
693 marshalStringName = varQual dOTNET FSLIT("marshalString") marshalStringIdKey
694 unmarshalStringName = varQual dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
695 checkDotnetResName = varQual dOTNET FSLIT("checkResult") checkDotnetResNameIdKey
698 parrayTyConName = tcQual nDP_PARRAY FSLIT("PArray") parrayTyConKey
699 paTyConName = tcQual nDP_PARRAY FSLIT("PA") paTyConKey
700 preprTyConName = tcQual nDP_PARRAY FSLIT("PRepr") preprTyConKey
701 prTyConName = tcQual nDP_PARRAY FSLIT("PR") prTyConKey
702 parrayIntPrimTyConName = tcQual nDP_PRIM FSLIT("PArray_Int#")
703 parrayIntPrimTyConKey
704 mkPRName = varQual nDP_PARRAY FSLIT("mkPR") mkPRIdKey
705 lengthPAName = varQual nDP_PARRAY FSLIT("lengthPA") lengthPAIdKey
706 replicatePAName = varQual nDP_PARRAY FSLIT("replicatePA") replicatePAIdKey
707 emptyPAName = varQual nDP_PARRAY FSLIT("emptyPA") emptyPAIdKey
708 packPAName = varQual nDP_PARRAY FSLIT("packPA") packPAIdKey
709 combinePAName = varQual nDP_PARRAY FSLIT("combinePA") combinePAIdKey
710 closureTyConName = tcQual nDP_CLOSURE FSLIT(":->") closureTyConKey
711 mkClosureName = varQual nDP_CLOSURE FSLIT("mkClosure") mkClosureIdKey
712 applyClosureName = varQual nDP_CLOSURE FSLIT("$:") applyClosureIdKey
713 mkClosurePName = varQual nDP_CLOSURE FSLIT("mkClosureP") mkClosurePIdKey
714 applyClosurePName = varQual nDP_CLOSURE FSLIT("$:^") applyClosurePIdKey
717 %************************************************************************
719 \subsection{Local helpers}
721 %************************************************************************
723 All these are original names; hence mkOrig
726 varQual = mk_known_key_name varName
727 tcQual = mk_known_key_name tcName
728 clsQual = mk_known_key_name clsName
730 mk_known_key_name space mod str uniq
731 = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan
733 conName :: Module -> FastString -> Unique -> Name
735 = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan
737 methName :: Module -> FastString -> Unique -> Name
738 methName mod occ uniq
739 = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan
742 %************************************************************************
744 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
746 %************************************************************************
747 --MetaHaskell extension hand allocate keys here
750 boundedClassKey = mkPreludeClassUnique 1
751 enumClassKey = mkPreludeClassUnique 2
752 eqClassKey = mkPreludeClassUnique 3
753 floatingClassKey = mkPreludeClassUnique 5
754 fractionalClassKey = mkPreludeClassUnique 6
755 integralClassKey = mkPreludeClassUnique 7
756 monadClassKey = mkPreludeClassUnique 8
757 dataClassKey = mkPreludeClassUnique 9
758 functorClassKey = mkPreludeClassUnique 10
759 numClassKey = mkPreludeClassUnique 11
760 ordClassKey = mkPreludeClassUnique 12
761 readClassKey = mkPreludeClassUnique 13
762 realClassKey = mkPreludeClassUnique 14
763 realFloatClassKey = mkPreludeClassUnique 15
764 realFracClassKey = mkPreludeClassUnique 16
765 showClassKey = mkPreludeClassUnique 17
766 ixClassKey = mkPreludeClassUnique 18
768 typeableClassKey = mkPreludeClassUnique 20
769 typeable1ClassKey = mkPreludeClassUnique 21
770 typeable2ClassKey = mkPreludeClassUnique 22
771 typeable3ClassKey = mkPreludeClassUnique 23
772 typeable4ClassKey = mkPreludeClassUnique 24
773 typeable5ClassKey = mkPreludeClassUnique 25
774 typeable6ClassKey = mkPreludeClassUnique 26
775 typeable7ClassKey = mkPreludeClassUnique 27
777 monadFixClassKey = mkPreludeClassUnique 28
779 monadPlusClassKey = mkPreludeClassUnique 30
780 randomClassKey = mkPreludeClassUnique 31
781 randomGenClassKey = mkPreludeClassUnique 32
783 isStringClassKey = mkPreludeClassUnique 33
786 %************************************************************************
788 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
790 %************************************************************************
793 addrPrimTyConKey = mkPreludeTyConUnique 1
794 arrayPrimTyConKey = mkPreludeTyConUnique 3
795 boolTyConKey = mkPreludeTyConUnique 4
796 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
797 charPrimTyConKey = mkPreludeTyConUnique 7
798 charTyConKey = mkPreludeTyConUnique 8
799 doublePrimTyConKey = mkPreludeTyConUnique 9
800 doubleTyConKey = mkPreludeTyConUnique 10
801 floatPrimTyConKey = mkPreludeTyConUnique 11
802 floatTyConKey = mkPreludeTyConUnique 12
803 funTyConKey = mkPreludeTyConUnique 13
804 intPrimTyConKey = mkPreludeTyConUnique 14
805 intTyConKey = mkPreludeTyConUnique 15
806 int8TyConKey = mkPreludeTyConUnique 16
807 int16TyConKey = mkPreludeTyConUnique 17
808 int32PrimTyConKey = mkPreludeTyConUnique 18
809 int32TyConKey = mkPreludeTyConUnique 19
810 int64PrimTyConKey = mkPreludeTyConUnique 20
811 int64TyConKey = mkPreludeTyConUnique 21
812 integerTyConKey = mkPreludeTyConUnique 22
813 listTyConKey = mkPreludeTyConUnique 23
814 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
815 weakPrimTyConKey = mkPreludeTyConUnique 27
816 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
817 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
818 orderingTyConKey = mkPreludeTyConUnique 30
819 mVarPrimTyConKey = mkPreludeTyConUnique 31
820 ratioTyConKey = mkPreludeTyConUnique 32
821 rationalTyConKey = mkPreludeTyConUnique 33
822 realWorldTyConKey = mkPreludeTyConUnique 34
823 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
824 stablePtrTyConKey = mkPreludeTyConUnique 36
826 anyPrimTyConKey = mkPreludeTyConUnique 37
827 anyPrimTyCon1Key = mkPreludeTyConUnique 38
829 statePrimTyConKey = mkPreludeTyConUnique 50
830 stableNamePrimTyConKey = mkPreludeTyConUnique 51
831 stableNameTyConKey = mkPreludeTyConUnique 52
832 mutVarPrimTyConKey = mkPreludeTyConUnique 55
833 ioTyConKey = mkPreludeTyConUnique 56
834 wordPrimTyConKey = mkPreludeTyConUnique 58
835 wordTyConKey = mkPreludeTyConUnique 59
836 word8TyConKey = mkPreludeTyConUnique 60
837 word16TyConKey = mkPreludeTyConUnique 61
838 word32PrimTyConKey = mkPreludeTyConUnique 62
839 word32TyConKey = mkPreludeTyConUnique 63
840 word64PrimTyConKey = mkPreludeTyConUnique 64
841 word64TyConKey = mkPreludeTyConUnique 65
842 liftedConKey = mkPreludeTyConUnique 66
843 unliftedConKey = mkPreludeTyConUnique 67
844 anyBoxConKey = mkPreludeTyConUnique 68
845 kindConKey = mkPreludeTyConUnique 69
846 boxityConKey = mkPreludeTyConUnique 70
847 typeConKey = mkPreludeTyConUnique 71
848 threadIdPrimTyConKey = mkPreludeTyConUnique 72
849 bcoPrimTyConKey = mkPreludeTyConUnique 73
850 ptrTyConKey = mkPreludeTyConUnique 74
851 funPtrTyConKey = mkPreludeTyConUnique 75
852 tVarPrimTyConKey = mkPreludeTyConUnique 76
854 -- Generic Type Constructors
855 crossTyConKey = mkPreludeTyConUnique 79
856 plusTyConKey = mkPreludeTyConUnique 80
857 genUnitTyConKey = mkPreludeTyConUnique 81
859 -- Parallel array type constructor
860 parrTyConKey = mkPreludeTyConUnique 82
863 objectTyConKey = mkPreludeTyConUnique 83
865 eitherTyConKey = mkPreludeTyConUnique 84
867 -- Super Kinds constructors
868 tySuperKindTyConKey = mkPreludeTyConUnique 85
869 coSuperKindTyConKey = mkPreludeTyConUnique 86
872 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
873 openTypeKindTyConKey = mkPreludeTyConUnique 88
874 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
875 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
876 argTypeKindTyConKey = mkPreludeTyConUnique 91
878 -- Coercion constructors
879 symCoercionTyConKey = mkPreludeTyConUnique 93
880 transCoercionTyConKey = mkPreludeTyConUnique 94
881 leftCoercionTyConKey = mkPreludeTyConUnique 95
882 rightCoercionTyConKey = mkPreludeTyConUnique 96
883 instCoercionTyConKey = mkPreludeTyConUnique 97
884 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
886 unknownTyConKey = mkPreludeTyConUnique 99
887 unknown1TyConKey = mkPreludeTyConUnique 130
888 unknown2TyConKey = mkPreludeTyConUnique 131
889 unknown3TyConKey = mkPreludeTyConUnique 132
890 opaqueTyConKey = mkPreludeTyConUnique 133
892 stringTyConKey = mkPreludeTyConUnique 134
894 parrayTyConKey = mkPreludeTyConUnique 135
895 closureTyConKey = mkPreludeTyConUnique 136
896 paTyConKey = mkPreludeTyConUnique 137
897 preprTyConKey = mkPreludeTyConUnique 138
898 prTyConKey = mkPreludeTyConUnique 139
899 parrayIntPrimTyConKey = mkPreludeTyConUnique 140
902 ---------------- Template Haskell -------------------
903 -- USES TyConUniques 100-129
904 -----------------------------------------------------
906 unitTyConKey = mkTupleTyConUnique Boxed 0
909 %************************************************************************
911 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
913 %************************************************************************
916 charDataConKey = mkPreludeDataConUnique 1
917 consDataConKey = mkPreludeDataConUnique 2
918 doubleDataConKey = mkPreludeDataConUnique 3
919 falseDataConKey = mkPreludeDataConUnique 4
920 floatDataConKey = mkPreludeDataConUnique 5
921 intDataConKey = mkPreludeDataConUnique 6
922 smallIntegerDataConKey = mkPreludeDataConUnique 7
923 largeIntegerDataConKey = mkPreludeDataConUnique 8
924 nilDataConKey = mkPreludeDataConUnique 11
925 ratioDataConKey = mkPreludeDataConUnique 12
926 stableNameDataConKey = mkPreludeDataConUnique 14
927 trueDataConKey = mkPreludeDataConUnique 15
928 wordDataConKey = mkPreludeDataConUnique 16
929 ioDataConKey = mkPreludeDataConUnique 17
931 -- Generic data constructors
932 crossDataConKey = mkPreludeDataConUnique 20
933 inlDataConKey = mkPreludeDataConUnique 21
934 inrDataConKey = mkPreludeDataConUnique 22
935 genUnitDataConKey = mkPreludeDataConUnique 23
937 -- Data constructor for parallel arrays
938 parrDataConKey = mkPreludeDataConUnique 24
940 leftDataConKey = mkPreludeDataConUnique 25
941 rightDataConKey = mkPreludeDataConUnique 26
944 %************************************************************************
946 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
948 %************************************************************************
951 absentErrorIdKey = mkPreludeMiscIdUnique 1
952 augmentIdKey = mkPreludeMiscIdUnique 3
953 appendIdKey = mkPreludeMiscIdUnique 4
954 buildIdKey = mkPreludeMiscIdUnique 5
955 errorIdKey = mkPreludeMiscIdUnique 6
956 foldlIdKey = mkPreludeMiscIdUnique 7
957 foldrIdKey = mkPreludeMiscIdUnique 8
958 recSelErrorIdKey = mkPreludeMiscIdUnique 9
959 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
960 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
961 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
962 integerZeroIdKey = mkPreludeMiscIdUnique 13
963 int2IntegerIdKey = mkPreludeMiscIdUnique 14
964 seqIdKey = mkPreludeMiscIdUnique 15
965 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
966 eqStringIdKey = mkPreludeMiscIdUnique 17
967 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
968 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
969 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
970 parErrorIdKey = mkPreludeMiscIdUnique 21
971 parIdKey = mkPreludeMiscIdUnique 22
972 patErrorIdKey = mkPreludeMiscIdUnique 23
973 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
974 recConErrorIdKey = mkPreludeMiscIdUnique 25
975 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
976 traceIdKey = mkPreludeMiscIdUnique 27
977 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
978 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
979 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
980 unpackCStringIdKey = mkPreludeMiscIdUnique 31
982 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
983 concatIdKey = mkPreludeMiscIdUnique 33
984 filterIdKey = mkPreludeMiscIdUnique 34
985 zipIdKey = mkPreludeMiscIdUnique 35
986 bindIOIdKey = mkPreludeMiscIdUnique 36
987 returnIOIdKey = mkPreludeMiscIdUnique 37
988 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
989 newStablePtrIdKey = mkPreludeMiscIdUnique 39
990 plusIntegerIdKey = mkPreludeMiscIdUnique 41
991 timesIntegerIdKey = mkPreludeMiscIdUnique 42
992 printIdKey = mkPreludeMiscIdUnique 43
993 failIOIdKey = mkPreludeMiscIdUnique 44
994 nullAddrIdKey = mkPreludeMiscIdUnique 46
995 voidArgIdKey = mkPreludeMiscIdUnique 47
996 fstIdKey = mkPreludeMiscIdUnique 49
997 sndIdKey = mkPreludeMiscIdUnique 50
998 otherwiseIdKey = mkPreludeMiscIdUnique 51
999 assertIdKey = mkPreludeMiscIdUnique 53
1000 runSTRepIdKey = mkPreludeMiscIdUnique 54
1002 rootMainKey = mkPreludeMiscIdUnique 55
1003 runMainKey = mkPreludeMiscIdUnique 56
1005 andIdKey = mkPreludeMiscIdUnique 57
1006 orIdKey = mkPreludeMiscIdUnique 58
1007 thenIOIdKey = mkPreludeMiscIdUnique 59
1008 lazyIdKey = mkPreludeMiscIdUnique 60
1009 assertErrorIdKey = mkPreludeMiscIdUnique 61
1011 breakpointIdKey = mkPreludeMiscIdUnique 62
1012 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1013 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1014 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1015 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1016 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1018 inlineIdKey = mkPreludeMiscIdUnique 68
1020 -- Parallel array functions
1021 nullPIdKey = mkPreludeMiscIdUnique 80
1022 lengthPIdKey = mkPreludeMiscIdUnique 81
1023 replicatePIdKey = mkPreludeMiscIdUnique 82
1024 mapPIdKey = mkPreludeMiscIdUnique 83
1025 filterPIdKey = mkPreludeMiscIdUnique 84
1026 zipPIdKey = mkPreludeMiscIdUnique 85
1027 crossMapPIdKey = mkPreludeMiscIdUnique 86
1028 indexPIdKey = mkPreludeMiscIdUnique 87
1029 toPIdKey = mkPreludeMiscIdUnique 88
1030 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1031 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1032 bpermutePIdKey = mkPreludeMiscIdUnique 91
1033 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
1034 indexOfPIdKey = mkPreludeMiscIdUnique 93
1037 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1038 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1039 marshalStringIdKey = mkPreludeMiscIdUnique 96
1040 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1041 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1045 Certain class operations from Prelude classes. They get their own
1046 uniques so we can look them up easily when we want to conjure them up
1047 during type checking.
1050 -- Just a place holder for unbound variables produced by the renamer:
1051 unboundKey = mkPreludeMiscIdUnique 101
1053 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1054 minusClassOpKey = mkPreludeMiscIdUnique 103
1055 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1056 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1057 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1058 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1059 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1060 eqClassOpKey = mkPreludeMiscIdUnique 109
1061 geClassOpKey = mkPreludeMiscIdUnique 110
1062 negateClassOpKey = mkPreludeMiscIdUnique 111
1063 failMClassOpKey = mkPreludeMiscIdUnique 112
1064 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1065 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1066 returnMClassOpKey = mkPreludeMiscIdUnique 117
1068 -- Recursive do notation
1069 mfixIdKey = mkPreludeMiscIdUnique 118
1072 arrAIdKey = mkPreludeMiscIdUnique 119
1073 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1074 firstAIdKey = mkPreludeMiscIdUnique 121
1075 appAIdKey = mkPreludeMiscIdUnique 122
1076 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1077 loopAIdKey = mkPreludeMiscIdUnique 124
1079 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1081 -- Flattened parallel array functions
1082 mkClosureIdKey = mkPreludeMiscIdUnique 126
1083 applyClosureIdKey = mkPreludeMiscIdUnique 127
1084 mkClosurePIdKey = mkPreludeMiscIdUnique 128
1085 applyClosurePIdKey = mkPreludeMiscIdUnique 129
1086 closurePAIdKey = mkPreludeMiscIdUnique 130
1087 lengthPAIdKey = mkPreludeMiscIdUnique 131
1088 replicatePAIdKey = mkPreludeMiscIdUnique 132
1089 emptyPAIdKey = mkPreludeMiscIdUnique 133
1090 packPAIdKey = mkPreludeMiscIdUnique 134
1091 combinePAIdKey = mkPreludeMiscIdUnique 135
1092 mkPRIdKey = mkPreludeMiscIdUnique 136
1094 ---------------- Template Haskell -------------------
1095 -- USES IdUniques 200-399
1096 -----------------------------------------------------
1100 %************************************************************************
1102 \subsection{Standard groups of types}
1104 %************************************************************************
1117 %************************************************************************
1119 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1121 %************************************************************************
1123 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1124 even though every numeric class has these two as a superclass,
1125 because the list of ambiguous dictionaries hasn't been simplified.
1133 ++ fractionalClassKeys
1135 fractionalClassKeys =
1136 [ fractionalClassKey
1142 -- the strictness analyser needs to know about numeric types
1143 -- (see SaAbsInt.lhs)
1144 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1148 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1149 -- and are: "classes defined in the Prelude or a standard library"
1150 standardClassKeys = derivableClassKeys ++ numericClassKeys
1151 ++ [randomClassKey, randomGenClassKey,
1153 monadClassKey, monadPlusClassKey,
1158 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1163 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1164 boundedClassKey, showClassKey, readClassKey ]