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, closureTyConName
221 , mkClosureName, applyClosureName
222 , mkClosurePName, applyClosurePName
223 , lengthPAName, replicatePAName, emptyPAName, packPAName,
224 combinePAName, intEqPAName ]
228 %************************************************************************
230 \subsection{Module names}
232 %************************************************************************
235 --MetaHaskell Extension Add a new module here
237 pRELUDE = mkBaseModule_ pRELUDE_NAME
238 gHC_PRIM = mkBaseModule FSLIT("GHC.Prim") -- Primitive types and values
239 gHC_BASE = mkBaseModule FSLIT("GHC.Base")
240 gHC_ENUM = mkBaseModule FSLIT("GHC.Enum")
241 gHC_SHOW = mkBaseModule FSLIT("GHC.Show")
242 gHC_READ = mkBaseModule FSLIT("GHC.Read")
243 gHC_NUM = mkBaseModule FSLIT("GHC.Num")
244 gHC_LIST = mkBaseModule FSLIT("GHC.List")
245 gHC_PARR = mkBaseModule FSLIT("GHC.PArr")
246 dATA_TUP = mkBaseModule FSLIT("Data.Tuple")
247 dATA_EITHER = mkBaseModule FSLIT("Data.Either")
248 dATA_STRING = mkBaseModule FSLIT("Data.String")
249 gHC_PACK = mkBaseModule FSLIT("GHC.Pack")
250 gHC_CONC = mkBaseModule FSLIT("GHC.Conc")
251 gHC_IO_BASE = mkBaseModule FSLIT("GHC.IOBase")
252 gHC_ST = mkBaseModule FSLIT("GHC.ST")
253 gHC_ARR = mkBaseModule FSLIT("GHC.Arr")
254 gHC_STABLE = mkBaseModule FSLIT("GHC.Stable")
255 gHC_ADDR = mkBaseModule FSLIT("GHC.Addr")
256 gHC_PTR = mkBaseModule FSLIT("GHC.Ptr")
257 gHC_ERR = mkBaseModule FSLIT("GHC.Err")
258 gHC_REAL = mkBaseModule FSLIT("GHC.Real")
259 gHC_FLOAT = mkBaseModule FSLIT("GHC.Float")
260 gHC_TOP_HANDLER = mkBaseModule FSLIT("GHC.TopHandler")
261 sYSTEM_IO = mkBaseModule FSLIT("System.IO")
262 dYNAMIC = mkBaseModule FSLIT("Data.Dynamic")
263 tYPEABLE = mkBaseModule FSLIT("Data.Typeable")
264 gENERICS = mkBaseModule FSLIT("Data.Generics.Basics")
265 dOTNET = mkBaseModule FSLIT("GHC.Dotnet")
266 rEAD_PREC = mkBaseModule FSLIT("Text.ParserCombinators.ReadPrec")
267 lEX = mkBaseModule FSLIT("Text.Read.Lex")
268 gHC_INT = mkBaseModule FSLIT("GHC.Int")
269 gHC_WORD = mkBaseModule FSLIT("GHC.Word")
270 mONAD = mkBaseModule FSLIT("Control.Monad")
271 mONAD_FIX = mkBaseModule FSLIT("Control.Monad.Fix")
272 aRROW = mkBaseModule FSLIT("Control.Arrow")
273 rANDOM = mkBaseModule FSLIT("System.Random")
274 gLA_EXTS = mkBaseModule FSLIT("GHC.Exts")
276 nDP_PARRAY = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.PArray")
277 nDP_UTILS = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Utils")
278 nDP_CLOSURE = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
279 nDP_INTERFACE_NAME = mkModuleNameFS FSLIT("Data.Array.Parallel.Lifted")
280 nDP_BUILTIN = mkModuleNameFS FSLIT(":NDP")
282 mAIN = mkMainModule_ mAIN_NAME
283 rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
285 -- The ':xxx' makes a module name that the user can never
286 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
287 -- module name still starts with a capital letter, which keeps
288 -- the z-encoded version consistent.
289 iNTERACTIVE = mkMainModule FSLIT(":Interactive")
290 thFAKE = mkMainModule FSLIT(":THFake")
292 pRELUDE_NAME = mkModuleNameFS FSLIT("Prelude")
293 mAIN_NAME = mkModuleNameFS FSLIT("Main")
295 mkBaseModule :: FastString -> Module
296 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
298 mkBaseModule_ :: ModuleName -> Module
299 mkBaseModule_ m = mkModule basePackageId m
301 mkNDPModule :: FastString -> Module
302 mkNDPModule m = mkModule ndpPackageId (mkModuleNameFS m)
304 mkNDPModule_ :: ModuleName -> Module
305 mkNDPModule_ m = mkModule ndpPackageId m
307 mkMainModule :: FastString -> Module
308 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
310 mkMainModule_ :: ModuleName -> Module
311 mkMainModule_ m = mkModule mainPackageId m
314 %************************************************************************
316 \subsection{Constructing the names of tuples
318 %************************************************************************
321 mkTupleModule :: Boxity -> Arity -> Module
322 mkTupleModule Boxed 0 = gHC_BASE
323 mkTupleModule Boxed _ = dATA_TUP
324 mkTupleModule Unboxed _ = gHC_PRIM
328 %************************************************************************
332 %************************************************************************
335 main_RDR_Unqual = mkUnqual varName FSLIT("main")
336 -- We definitely don't want an Orig RdrName, because
337 -- main might, in principle, be imported into module Main
339 eq_RDR = nameRdrName eqName
340 ge_RDR = nameRdrName geName
341 ne_RDR = varQual_RDR gHC_BASE FSLIT("/=")
342 le_RDR = varQual_RDR gHC_BASE FSLIT("<=")
343 gt_RDR = varQual_RDR gHC_BASE FSLIT(">")
344 compare_RDR = varQual_RDR gHC_BASE FSLIT("compare")
345 ltTag_RDR = dataQual_RDR gHC_BASE FSLIT("LT")
346 eqTag_RDR = dataQual_RDR gHC_BASE FSLIT("EQ")
347 gtTag_RDR = dataQual_RDR gHC_BASE FSLIT("GT")
349 eqClass_RDR = nameRdrName eqClassName
350 numClass_RDR = nameRdrName numClassName
351 ordClass_RDR = nameRdrName ordClassName
352 enumClass_RDR = nameRdrName enumClassName
353 monadClass_RDR = nameRdrName monadClassName
355 map_RDR = varQual_RDR gHC_BASE FSLIT("map")
356 append_RDR = varQual_RDR gHC_BASE FSLIT("++")
358 foldr_RDR = nameRdrName foldrName
359 build_RDR = nameRdrName buildName
360 returnM_RDR = nameRdrName returnMName
361 bindM_RDR = nameRdrName bindMName
362 failM_RDR = nameRdrName failMName
364 and_RDR = nameRdrName andName
366 left_RDR = nameRdrName leftDataConName
367 right_RDR = nameRdrName rightDataConName
369 fromEnum_RDR = varQual_RDR gHC_ENUM FSLIT("fromEnum")
370 toEnum_RDR = varQual_RDR gHC_ENUM FSLIT("toEnum")
372 enumFrom_RDR = nameRdrName enumFromName
373 enumFromTo_RDR = nameRdrName enumFromToName
374 enumFromThen_RDR = nameRdrName enumFromThenName
375 enumFromThenTo_RDR = nameRdrName enumFromThenToName
377 ratioDataCon_RDR = nameRdrName ratioDataConName
378 plusInteger_RDR = nameRdrName plusIntegerName
379 timesInteger_RDR = nameRdrName timesIntegerName
381 ioDataCon_RDR = nameRdrName ioDataConName
383 eqString_RDR = nameRdrName eqStringName
384 unpackCString_RDR = nameRdrName unpackCStringName
385 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
386 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
388 newStablePtr_RDR = nameRdrName newStablePtrName
389 wordDataCon_RDR = dataQual_RDR gHC_WORD FSLIT("W#")
391 bindIO_RDR = nameRdrName bindIOName
392 returnIO_RDR = nameRdrName returnIOName
394 fromInteger_RDR = nameRdrName fromIntegerName
395 fromRational_RDR = nameRdrName fromRationalName
396 minus_RDR = nameRdrName minusName
397 times_RDR = varQual_RDR gHC_NUM FSLIT("*")
398 plus_RDR = varQual_RDR gHC_NUM FSLIT("+")
400 fromString_RDR = nameRdrName fromStringName
402 compose_RDR = varQual_RDR gHC_BASE FSLIT(".")
404 not_RDR = varQual_RDR gHC_BASE FSLIT("not")
405 getTag_RDR = varQual_RDR gHC_BASE FSLIT("getTag")
406 succ_RDR = varQual_RDR gHC_ENUM FSLIT("succ")
407 pred_RDR = varQual_RDR gHC_ENUM FSLIT("pred")
408 minBound_RDR = varQual_RDR gHC_ENUM FSLIT("minBound")
409 maxBound_RDR = varQual_RDR gHC_ENUM FSLIT("maxBound")
410 range_RDR = varQual_RDR gHC_ARR FSLIT("range")
411 inRange_RDR = varQual_RDR gHC_ARR FSLIT("inRange")
412 index_RDR = varQual_RDR gHC_ARR FSLIT("index")
413 unsafeIndex_RDR = varQual_RDR gHC_ARR FSLIT("unsafeIndex")
414 unsafeRangeSize_RDR = varQual_RDR gHC_ARR FSLIT("unsafeRangeSize")
416 readList_RDR = varQual_RDR gHC_READ FSLIT("readList")
417 readListDefault_RDR = varQual_RDR gHC_READ FSLIT("readListDefault")
418 readListPrec_RDR = varQual_RDR gHC_READ FSLIT("readListPrec")
419 readListPrecDefault_RDR = varQual_RDR gHC_READ FSLIT("readListPrecDefault")
420 readPrec_RDR = varQual_RDR gHC_READ FSLIT("readPrec")
421 parens_RDR = varQual_RDR gHC_READ FSLIT("parens")
422 choose_RDR = varQual_RDR gHC_READ FSLIT("choose")
423 lexP_RDR = varQual_RDR gHC_READ FSLIT("lexP")
425 punc_RDR = dataQual_RDR lEX FSLIT("Punc")
426 ident_RDR = dataQual_RDR lEX FSLIT("Ident")
427 symbol_RDR = dataQual_RDR lEX FSLIT("Symbol")
429 step_RDR = varQual_RDR rEAD_PREC FSLIT("step")
430 alt_RDR = varQual_RDR rEAD_PREC FSLIT("+++")
431 reset_RDR = varQual_RDR rEAD_PREC FSLIT("reset")
432 prec_RDR = varQual_RDR rEAD_PREC FSLIT("prec")
434 showList_RDR = varQual_RDR gHC_SHOW FSLIT("showList")
435 showList___RDR = varQual_RDR gHC_SHOW FSLIT("showList__")
436 showsPrec_RDR = varQual_RDR gHC_SHOW FSLIT("showsPrec")
437 showString_RDR = varQual_RDR gHC_SHOW FSLIT("showString")
438 showSpace_RDR = varQual_RDR gHC_SHOW FSLIT("showSpace")
439 showParen_RDR = varQual_RDR gHC_SHOW FSLIT("showParen")
441 typeOf_RDR = varQual_RDR tYPEABLE FSLIT("typeOf")
442 mkTypeRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyConApp")
443 mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon")
445 undefined_RDR = varQual_RDR gHC_ERR FSLIT("undefined")
447 crossDataCon_RDR = dataQual_RDR gHC_BASE FSLIT(":*:")
448 inlDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inl")
449 inrDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inr")
450 genUnitDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Unit")
452 ----------------------
453 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
454 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
455 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
456 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
459 %************************************************************************
461 \subsection{Known-key names}
463 %************************************************************************
465 Many of these Names are not really "built in", but some parts of the
466 compiler (notably the deriving mechanism) need to mention their names,
467 and it's convenient to write them all down in one place.
469 --MetaHaskell Extension add the constrs and the lower case case
470 -- guys as well (perhaps) e.g. see trueDataConName below
474 runMainIOName = varQual gHC_TOP_HANDLER FSLIT("runMainIO") runMainKey
476 orderingTyConName = tcQual gHC_BASE FSLIT("Ordering") orderingTyConKey
478 eitherTyConName = tcQual dATA_EITHER FSLIT("Either") eitherTyConKey
479 leftDataConName = conName dATA_EITHER FSLIT("Left") leftDataConKey
480 rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey
483 crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey
484 plusTyConName = tcQual gHC_BASE FSLIT(":+:") plusTyConKey
485 genUnitTyConName = tcQual gHC_BASE FSLIT("Unit") genUnitTyConKey
487 -- Base strings Strings
488 unpackCStringName = varQual gHC_BASE FSLIT("unpackCString#") unpackCStringIdKey
489 unpackCStringAppendName = varQual gHC_BASE FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
490 unpackCStringFoldrName = varQual gHC_BASE FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
491 unpackCStringUtf8Name = varQual gHC_BASE FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
492 eqStringName = varQual gHC_BASE FSLIT("eqString") eqStringIdKey
493 stringTyConName = tcQual gHC_BASE FSLIT("String") stringTyConKey
495 -- The 'inline' function
496 inlineIdName = varQual gHC_BASE FSLIT("inline") inlineIdKey
498 -- Base classes (Eq, Ord, Functor)
499 eqClassName = clsQual gHC_BASE FSLIT("Eq") eqClassKey
500 eqName = methName gHC_BASE FSLIT("==") eqClassOpKey
501 ordClassName = clsQual gHC_BASE FSLIT("Ord") ordClassKey
502 geName = methName gHC_BASE FSLIT(">=") geClassOpKey
503 functorClassName = clsQual gHC_BASE FSLIT("Functor") functorClassKey
506 monadClassName = clsQual gHC_BASE FSLIT("Monad") monadClassKey
507 thenMName = methName gHC_BASE FSLIT(">>") thenMClassOpKey
508 bindMName = methName gHC_BASE FSLIT(">>=") bindMClassOpKey
509 returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey
510 failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey
512 -- Random PrelBase functions
513 fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey
514 otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey
515 foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey
516 buildName = varQual gHC_BASE FSLIT("build") buildIdKey
517 augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey
518 appendName = varQual gHC_BASE FSLIT("++") appendIdKey
519 andName = varQual gHC_BASE FSLIT("&&") andIdKey
520 orName = varQual gHC_BASE FSLIT("||") orIdKey
521 assertName = varQual gHC_BASE FSLIT("assert") assertIdKey
522 breakpointName = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
523 breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
524 breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
525 opaqueTyConName = tcQual gHC_BASE FSLIT("Opaque") opaqueTyConKey
530 (mkOccNameFS varName FSLIT("breakpointJump"))
532 breakpointCondJumpName
534 breakpointCondJumpIdKey
535 (mkOccNameFS varName FSLIT("breakpointCondJump"))
537 breakpointAutoJumpName
539 breakpointAutoJumpIdKey
540 (mkOccNameFS varName FSLIT("breakpointAutoJump"))
544 fstName = varQual dATA_TUP FSLIT("fst") fstIdKey
545 sndName = varQual dATA_TUP FSLIT("snd") sndIdKey
548 numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey
549 fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
550 minusName = methName gHC_NUM FSLIT("-") minusClassOpKey
551 negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey
552 plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
553 timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
554 integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
555 smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
556 largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
558 -- PrelReal types and classes
559 rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
560 ratioTyConName = tcQual gHC_REAL FSLIT("Ratio") ratioTyConKey
561 ratioDataConName = conName gHC_REAL FSLIT(":%") ratioDataConKey
562 realClassName = clsQual gHC_REAL FSLIT("Real") realClassKey
563 integralClassName = clsQual gHC_REAL FSLIT("Integral") integralClassKey
564 realFracClassName = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
565 fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
566 fromRationalName = methName gHC_REAL FSLIT("fromRational") fromRationalClassOpKey
569 floatingClassName = clsQual gHC_FLOAT FSLIT("Floating") floatingClassKey
570 realFloatClassName = clsQual gHC_FLOAT FSLIT("RealFloat") realFloatClassKey
573 ixClassName = clsQual gHC_ARR FSLIT("Ix") ixClassKey
576 typeableClassName = clsQual tYPEABLE FSLIT("Typeable") typeableClassKey
577 typeable1ClassName = clsQual tYPEABLE FSLIT("Typeable1") typeable1ClassKey
578 typeable2ClassName = clsQual tYPEABLE FSLIT("Typeable2") typeable2ClassKey
579 typeable3ClassName = clsQual tYPEABLE FSLIT("Typeable3") typeable3ClassKey
580 typeable4ClassName = clsQual tYPEABLE FSLIT("Typeable4") typeable4ClassKey
581 typeable5ClassName = clsQual tYPEABLE FSLIT("Typeable5") typeable5ClassKey
582 typeable6ClassName = clsQual tYPEABLE FSLIT("Typeable6") typeable6ClassKey
583 typeable7ClassName = clsQual tYPEABLE FSLIT("Typeable7") typeable7ClassKey
585 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
586 , typeable3ClassName, typeable4ClassName, typeable5ClassName
587 , typeable6ClassName, typeable7ClassName ]
590 dataClassName = clsQual gENERICS FSLIT("Data") dataClassKey
593 assertErrorName = varQual gHC_ERR FSLIT("assertError") assertErrorIdKey
595 -- Enum module (Enum, Bounded)
596 enumClassName = clsQual gHC_ENUM FSLIT("Enum") enumClassKey
597 enumFromName = methName gHC_ENUM FSLIT("enumFrom") enumFromClassOpKey
598 enumFromToName = methName gHC_ENUM FSLIT("enumFromTo") enumFromToClassOpKey
599 enumFromThenName = methName gHC_ENUM FSLIT("enumFromThen") enumFromThenClassOpKey
600 enumFromThenToName = methName gHC_ENUM FSLIT("enumFromThenTo") enumFromThenToClassOpKey
601 boundedClassName = clsQual gHC_ENUM FSLIT("Bounded") boundedClassKey
604 concatName = varQual gHC_LIST FSLIT("concat") concatIdKey
605 filterName = varQual gHC_LIST FSLIT("filter") filterIdKey
606 zipName = varQual gHC_LIST FSLIT("zip") zipIdKey
609 showClassName = clsQual gHC_SHOW FSLIT("Show") showClassKey
612 readClassName = clsQual gHC_READ FSLIT("Read") readClassKey
614 -- parallel array types and functions
615 enumFromToPName = varQual gHC_PARR FSLIT("enumFromToP") enumFromToPIdKey
616 enumFromThenToPName= varQual gHC_PARR FSLIT("enumFromThenToP") enumFromThenToPIdKey
617 nullPName = varQual gHC_PARR FSLIT("nullP") nullPIdKey
618 lengthPName = varQual gHC_PARR FSLIT("lengthP") lengthPIdKey
619 replicatePName = varQual gHC_PARR FSLIT("replicateP") replicatePIdKey
620 mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey
621 filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey
622 zipPName = varQual gHC_PARR FSLIT("zipP") zipPIdKey
623 crossMapPName = varQual gHC_PARR FSLIT("crossMapP") crossMapPIdKey
624 indexPName = varQual gHC_PARR FSLIT("!:") indexPIdKey
625 toPName = varQual gHC_PARR FSLIT("toP") toPIdKey
626 bpermutePName = varQual gHC_PARR FSLIT("bpermuteP") bpermutePIdKey
627 bpermuteDftPName = varQual gHC_PARR FSLIT("bpermuteDftP") bpermuteDftPIdKey
628 indexOfPName = varQual gHC_PARR FSLIT("indexOfP") indexOfPIdKey
631 ioTyConName = tcQual gHC_IO_BASE FSLIT("IO") ioTyConKey
632 ioDataConName = conName gHC_IO_BASE FSLIT("IO") ioDataConKey
633 thenIOName = varQual gHC_IO_BASE FSLIT("thenIO") thenIOIdKey
634 bindIOName = varQual gHC_IO_BASE FSLIT("bindIO") bindIOIdKey
635 returnIOName = varQual gHC_IO_BASE FSLIT("returnIO") returnIOIdKey
636 failIOName = varQual gHC_IO_BASE FSLIT("failIO") failIOIdKey
639 printName = varQual sYSTEM_IO FSLIT("print") printIdKey
641 -- Int, Word, and Addr things
642 int8TyConName = tcQual gHC_INT FSLIT("Int8") int8TyConKey
643 int16TyConName = tcQual gHC_INT FSLIT("Int16") int16TyConKey
644 int32TyConName = tcQual gHC_INT FSLIT("Int32") int32TyConKey
645 int64TyConName = tcQual gHC_INT FSLIT("Int64") int64TyConKey
648 word8TyConName = tcQual gHC_WORD FSLIT("Word8") word8TyConKey
649 word16TyConName = tcQual gHC_WORD FSLIT("Word16") word16TyConKey
650 word32TyConName = tcQual gHC_WORD FSLIT("Word32") word32TyConKey
651 word64TyConName = tcQual gHC_WORD FSLIT("Word64") word64TyConKey
652 wordTyConName = tcQual gHC_WORD FSLIT("Word") wordTyConKey
653 wordDataConName = conName gHC_WORD FSLIT("W#") wordDataConKey
656 ptrTyConName = tcQual gHC_PTR FSLIT("Ptr") ptrTyConKey
657 funPtrTyConName = tcQual gHC_PTR FSLIT("FunPtr") funPtrTyConKey
659 -- Foreign objects and weak pointers
660 stablePtrTyConName = tcQual gHC_STABLE FSLIT("StablePtr") stablePtrTyConKey
661 newStablePtrName = varQual gHC_STABLE FSLIT("newStablePtr") newStablePtrIdKey
664 runSTRepName = varQual gHC_ST FSLIT("runSTRep") runSTRepIdKey
666 -- Recursive-do notation
667 monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
668 mfixName = methName mONAD_FIX FSLIT("mfix") mfixIdKey
671 arrAName = varQual aRROW FSLIT("arr") arrAIdKey
672 composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
673 firstAName = varQual aRROW FSLIT("first") firstAIdKey
674 appAName = varQual aRROW FSLIT("app") appAIdKey
675 choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
676 loopAName = varQual aRROW FSLIT("loop") loopAIdKey
678 -- Other classes, needed for type defaulting
679 monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey
680 randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey
681 randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
682 isStringClassName = clsQual dATA_STRING FSLIT("IsString") isStringClassKey
685 objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey
686 -- objectTyConName was "wTcQual", but that's gone now, and
687 -- I can't see why it was wired in anyway...
688 unmarshalObjectName = varQual dOTNET FSLIT("unmarshalObject") unmarshalObjectIdKey
689 marshalObjectName = varQual dOTNET FSLIT("marshalObject") marshalObjectIdKey
690 marshalStringName = varQual dOTNET FSLIT("marshalString") marshalStringIdKey
691 unmarshalStringName = varQual dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
692 checkDotnetResName = varQual dOTNET FSLIT("checkResult") checkDotnetResNameIdKey
695 parrayTyConName = tcQual nDP_PARRAY FSLIT("PArray") parrayTyConKey
696 paTyConName = tcQual nDP_PARRAY FSLIT("PA") paTyConKey
697 lengthPAName = varQual nDP_PARRAY FSLIT("lengthPA") lengthPAIdKey
698 replicatePAName = varQual nDP_PARRAY FSLIT("replicatePA") replicatePAIdKey
699 emptyPAName = varQual nDP_PARRAY FSLIT("emptyPA") emptyPAIdKey
700 packPAName = varQual nDP_PARRAY FSLIT("packPA") packPAIdKey
701 combinePAName = varQual nDP_PARRAY FSLIT("combinePA") combinePAIdKey
702 intEqPAName = varQual nDP_UTILS FSLIT("intEqPA") intEqPAIdKey
703 closureTyConName = tcQual nDP_CLOSURE FSLIT(":->") closureTyConKey
704 mkClosureName = varQual nDP_CLOSURE FSLIT("mkClosure") mkClosureIdKey
705 applyClosureName = varQual nDP_CLOSURE FSLIT("$:") applyClosureIdKey
706 mkClosurePName = varQual nDP_CLOSURE FSLIT("mkClosureP") mkClosurePIdKey
707 applyClosurePName = varQual nDP_CLOSURE FSLIT("$:^") applyClosurePIdKey
710 %************************************************************************
712 \subsection{Local helpers}
714 %************************************************************************
716 All these are original names; hence mkOrig
719 varQual = mk_known_key_name varName
720 tcQual = mk_known_key_name tcName
721 clsQual = mk_known_key_name clsName
723 mk_known_key_name space mod str uniq
724 = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan
726 conName :: Module -> FastString -> Unique -> Name
728 = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan
730 methName :: Module -> FastString -> Unique -> Name
731 methName mod occ uniq
732 = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan
735 %************************************************************************
737 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
739 %************************************************************************
740 --MetaHaskell extension hand allocate keys here
743 boundedClassKey = mkPreludeClassUnique 1
744 enumClassKey = mkPreludeClassUnique 2
745 eqClassKey = mkPreludeClassUnique 3
746 floatingClassKey = mkPreludeClassUnique 5
747 fractionalClassKey = mkPreludeClassUnique 6
748 integralClassKey = mkPreludeClassUnique 7
749 monadClassKey = mkPreludeClassUnique 8
750 dataClassKey = mkPreludeClassUnique 9
751 functorClassKey = mkPreludeClassUnique 10
752 numClassKey = mkPreludeClassUnique 11
753 ordClassKey = mkPreludeClassUnique 12
754 readClassKey = mkPreludeClassUnique 13
755 realClassKey = mkPreludeClassUnique 14
756 realFloatClassKey = mkPreludeClassUnique 15
757 realFracClassKey = mkPreludeClassUnique 16
758 showClassKey = mkPreludeClassUnique 17
759 ixClassKey = mkPreludeClassUnique 18
761 typeableClassKey = mkPreludeClassUnique 20
762 typeable1ClassKey = mkPreludeClassUnique 21
763 typeable2ClassKey = mkPreludeClassUnique 22
764 typeable3ClassKey = mkPreludeClassUnique 23
765 typeable4ClassKey = mkPreludeClassUnique 24
766 typeable5ClassKey = mkPreludeClassUnique 25
767 typeable6ClassKey = mkPreludeClassUnique 26
768 typeable7ClassKey = mkPreludeClassUnique 27
770 monadFixClassKey = mkPreludeClassUnique 28
772 monadPlusClassKey = mkPreludeClassUnique 30
773 randomClassKey = mkPreludeClassUnique 31
774 randomGenClassKey = mkPreludeClassUnique 32
776 isStringClassKey = mkPreludeClassUnique 33
779 %************************************************************************
781 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
783 %************************************************************************
786 addrPrimTyConKey = mkPreludeTyConUnique 1
787 arrayPrimTyConKey = mkPreludeTyConUnique 3
788 boolTyConKey = mkPreludeTyConUnique 4
789 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
790 charPrimTyConKey = mkPreludeTyConUnique 7
791 charTyConKey = mkPreludeTyConUnique 8
792 doublePrimTyConKey = mkPreludeTyConUnique 9
793 doubleTyConKey = mkPreludeTyConUnique 10
794 floatPrimTyConKey = mkPreludeTyConUnique 11
795 floatTyConKey = mkPreludeTyConUnique 12
796 funTyConKey = mkPreludeTyConUnique 13
797 intPrimTyConKey = mkPreludeTyConUnique 14
798 intTyConKey = mkPreludeTyConUnique 15
799 int8TyConKey = mkPreludeTyConUnique 16
800 int16TyConKey = mkPreludeTyConUnique 17
801 int32PrimTyConKey = mkPreludeTyConUnique 18
802 int32TyConKey = mkPreludeTyConUnique 19
803 int64PrimTyConKey = mkPreludeTyConUnique 20
804 int64TyConKey = mkPreludeTyConUnique 21
805 integerTyConKey = mkPreludeTyConUnique 22
806 listTyConKey = mkPreludeTyConUnique 23
807 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
808 weakPrimTyConKey = mkPreludeTyConUnique 27
809 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
810 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
811 orderingTyConKey = mkPreludeTyConUnique 30
812 mVarPrimTyConKey = mkPreludeTyConUnique 31
813 ratioTyConKey = mkPreludeTyConUnique 32
814 rationalTyConKey = mkPreludeTyConUnique 33
815 realWorldTyConKey = mkPreludeTyConUnique 34
816 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
817 stablePtrTyConKey = mkPreludeTyConUnique 36
819 anyPrimTyConKey = mkPreludeTyConUnique 37
820 anyPrimTyCon1Key = mkPreludeTyConUnique 38
822 statePrimTyConKey = mkPreludeTyConUnique 50
823 stableNamePrimTyConKey = mkPreludeTyConUnique 51
824 stableNameTyConKey = mkPreludeTyConUnique 52
825 mutVarPrimTyConKey = mkPreludeTyConUnique 55
826 ioTyConKey = mkPreludeTyConUnique 56
827 wordPrimTyConKey = mkPreludeTyConUnique 58
828 wordTyConKey = mkPreludeTyConUnique 59
829 word8TyConKey = mkPreludeTyConUnique 60
830 word16TyConKey = mkPreludeTyConUnique 61
831 word32PrimTyConKey = mkPreludeTyConUnique 62
832 word32TyConKey = mkPreludeTyConUnique 63
833 word64PrimTyConKey = mkPreludeTyConUnique 64
834 word64TyConKey = mkPreludeTyConUnique 65
835 liftedConKey = mkPreludeTyConUnique 66
836 unliftedConKey = mkPreludeTyConUnique 67
837 anyBoxConKey = mkPreludeTyConUnique 68
838 kindConKey = mkPreludeTyConUnique 69
839 boxityConKey = mkPreludeTyConUnique 70
840 typeConKey = mkPreludeTyConUnique 71
841 threadIdPrimTyConKey = mkPreludeTyConUnique 72
842 bcoPrimTyConKey = mkPreludeTyConUnique 73
843 ptrTyConKey = mkPreludeTyConUnique 74
844 funPtrTyConKey = mkPreludeTyConUnique 75
845 tVarPrimTyConKey = mkPreludeTyConUnique 76
847 -- Generic Type Constructors
848 crossTyConKey = mkPreludeTyConUnique 79
849 plusTyConKey = mkPreludeTyConUnique 80
850 genUnitTyConKey = mkPreludeTyConUnique 81
852 -- Parallel array type constructor
853 parrTyConKey = mkPreludeTyConUnique 82
856 objectTyConKey = mkPreludeTyConUnique 83
858 eitherTyConKey = mkPreludeTyConUnique 84
860 -- Super Kinds constructors
861 tySuperKindTyConKey = mkPreludeTyConUnique 85
862 coSuperKindTyConKey = mkPreludeTyConUnique 86
865 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
866 openTypeKindTyConKey = mkPreludeTyConUnique 88
867 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
868 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
869 argTypeKindTyConKey = mkPreludeTyConUnique 91
871 -- Coercion constructors
872 symCoercionTyConKey = mkPreludeTyConUnique 93
873 transCoercionTyConKey = mkPreludeTyConUnique 94
874 leftCoercionTyConKey = mkPreludeTyConUnique 95
875 rightCoercionTyConKey = mkPreludeTyConUnique 96
876 instCoercionTyConKey = mkPreludeTyConUnique 97
877 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
879 unknownTyConKey = mkPreludeTyConUnique 99
880 unknown1TyConKey = mkPreludeTyConUnique 130
881 unknown2TyConKey = mkPreludeTyConUnique 131
882 unknown3TyConKey = mkPreludeTyConUnique 132
883 opaqueTyConKey = mkPreludeTyConUnique 133
885 stringTyConKey = mkPreludeTyConUnique 134
887 parrayTyConKey = mkPreludeTyConUnique 135
888 closureTyConKey = mkPreludeTyConUnique 136
889 paTyConKey = mkPreludeTyConUnique 137
892 ---------------- Template Haskell -------------------
893 -- USES TyConUniques 100-129
894 -----------------------------------------------------
896 unitTyConKey = mkTupleTyConUnique Boxed 0
899 %************************************************************************
901 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
903 %************************************************************************
906 charDataConKey = mkPreludeDataConUnique 1
907 consDataConKey = mkPreludeDataConUnique 2
908 doubleDataConKey = mkPreludeDataConUnique 3
909 falseDataConKey = mkPreludeDataConUnique 4
910 floatDataConKey = mkPreludeDataConUnique 5
911 intDataConKey = mkPreludeDataConUnique 6
912 smallIntegerDataConKey = mkPreludeDataConUnique 7
913 largeIntegerDataConKey = mkPreludeDataConUnique 8
914 nilDataConKey = mkPreludeDataConUnique 11
915 ratioDataConKey = mkPreludeDataConUnique 12
916 stableNameDataConKey = mkPreludeDataConUnique 14
917 trueDataConKey = mkPreludeDataConUnique 15
918 wordDataConKey = mkPreludeDataConUnique 16
919 ioDataConKey = mkPreludeDataConUnique 17
921 -- Generic data constructors
922 crossDataConKey = mkPreludeDataConUnique 20
923 inlDataConKey = mkPreludeDataConUnique 21
924 inrDataConKey = mkPreludeDataConUnique 22
925 genUnitDataConKey = mkPreludeDataConUnique 23
927 -- Data constructor for parallel arrays
928 parrDataConKey = mkPreludeDataConUnique 24
930 leftDataConKey = mkPreludeDataConUnique 25
931 rightDataConKey = mkPreludeDataConUnique 26
934 %************************************************************************
936 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
938 %************************************************************************
941 absentErrorIdKey = mkPreludeMiscIdUnique 1
942 augmentIdKey = mkPreludeMiscIdUnique 3
943 appendIdKey = mkPreludeMiscIdUnique 4
944 buildIdKey = mkPreludeMiscIdUnique 5
945 errorIdKey = mkPreludeMiscIdUnique 6
946 foldlIdKey = mkPreludeMiscIdUnique 7
947 foldrIdKey = mkPreludeMiscIdUnique 8
948 recSelErrorIdKey = mkPreludeMiscIdUnique 9
949 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
950 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
951 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
952 integerZeroIdKey = mkPreludeMiscIdUnique 13
953 int2IntegerIdKey = mkPreludeMiscIdUnique 14
954 seqIdKey = mkPreludeMiscIdUnique 15
955 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
956 eqStringIdKey = mkPreludeMiscIdUnique 17
957 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
958 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
959 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
960 parErrorIdKey = mkPreludeMiscIdUnique 21
961 parIdKey = mkPreludeMiscIdUnique 22
962 patErrorIdKey = mkPreludeMiscIdUnique 23
963 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
964 recConErrorIdKey = mkPreludeMiscIdUnique 25
965 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
966 traceIdKey = mkPreludeMiscIdUnique 27
967 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
968 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
969 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
970 unpackCStringIdKey = mkPreludeMiscIdUnique 31
972 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
973 concatIdKey = mkPreludeMiscIdUnique 33
974 filterIdKey = mkPreludeMiscIdUnique 34
975 zipIdKey = mkPreludeMiscIdUnique 35
976 bindIOIdKey = mkPreludeMiscIdUnique 36
977 returnIOIdKey = mkPreludeMiscIdUnique 37
978 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
979 newStablePtrIdKey = mkPreludeMiscIdUnique 39
980 plusIntegerIdKey = mkPreludeMiscIdUnique 41
981 timesIntegerIdKey = mkPreludeMiscIdUnique 42
982 printIdKey = mkPreludeMiscIdUnique 43
983 failIOIdKey = mkPreludeMiscIdUnique 44
984 nullAddrIdKey = mkPreludeMiscIdUnique 46
985 voidArgIdKey = mkPreludeMiscIdUnique 47
986 fstIdKey = mkPreludeMiscIdUnique 49
987 sndIdKey = mkPreludeMiscIdUnique 50
988 otherwiseIdKey = mkPreludeMiscIdUnique 51
989 assertIdKey = mkPreludeMiscIdUnique 53
990 runSTRepIdKey = mkPreludeMiscIdUnique 54
992 rootMainKey = mkPreludeMiscIdUnique 55
993 runMainKey = mkPreludeMiscIdUnique 56
995 andIdKey = mkPreludeMiscIdUnique 57
996 orIdKey = mkPreludeMiscIdUnique 58
997 thenIOIdKey = mkPreludeMiscIdUnique 59
998 lazyIdKey = mkPreludeMiscIdUnique 60
999 assertErrorIdKey = mkPreludeMiscIdUnique 61
1001 breakpointIdKey = mkPreludeMiscIdUnique 62
1002 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1003 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1004 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1005 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1006 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1008 inlineIdKey = mkPreludeMiscIdUnique 68
1010 -- Parallel array functions
1011 nullPIdKey = mkPreludeMiscIdUnique 80
1012 lengthPIdKey = mkPreludeMiscIdUnique 81
1013 replicatePIdKey = mkPreludeMiscIdUnique 82
1014 mapPIdKey = mkPreludeMiscIdUnique 83
1015 filterPIdKey = mkPreludeMiscIdUnique 84
1016 zipPIdKey = mkPreludeMiscIdUnique 85
1017 crossMapPIdKey = mkPreludeMiscIdUnique 86
1018 indexPIdKey = mkPreludeMiscIdUnique 87
1019 toPIdKey = mkPreludeMiscIdUnique 88
1020 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1021 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1022 bpermutePIdKey = mkPreludeMiscIdUnique 91
1023 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
1024 indexOfPIdKey = mkPreludeMiscIdUnique 93
1027 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1028 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1029 marshalStringIdKey = mkPreludeMiscIdUnique 96
1030 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1031 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1035 Certain class operations from Prelude classes. They get their own
1036 uniques so we can look them up easily when we want to conjure them up
1037 during type checking.
1040 -- Just a place holder for unbound variables produced by the renamer:
1041 unboundKey = mkPreludeMiscIdUnique 101
1043 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1044 minusClassOpKey = mkPreludeMiscIdUnique 103
1045 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1046 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1047 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1048 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1049 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1050 eqClassOpKey = mkPreludeMiscIdUnique 109
1051 geClassOpKey = mkPreludeMiscIdUnique 110
1052 negateClassOpKey = mkPreludeMiscIdUnique 111
1053 failMClassOpKey = mkPreludeMiscIdUnique 112
1054 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1055 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1056 returnMClassOpKey = mkPreludeMiscIdUnique 117
1058 -- Recursive do notation
1059 mfixIdKey = mkPreludeMiscIdUnique 118
1062 arrAIdKey = mkPreludeMiscIdUnique 119
1063 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1064 firstAIdKey = mkPreludeMiscIdUnique 121
1065 appAIdKey = mkPreludeMiscIdUnique 122
1066 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1067 loopAIdKey = mkPreludeMiscIdUnique 124
1069 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1071 -- Flattened parallel array functions
1072 mkClosureIdKey = mkPreludeMiscIdUnique 126
1073 applyClosureIdKey = mkPreludeMiscIdUnique 127
1074 mkClosurePIdKey = mkPreludeMiscIdUnique 128
1075 applyClosurePIdKey = mkPreludeMiscIdUnique 129
1076 closurePAIdKey = mkPreludeMiscIdUnique 130
1077 lengthPAIdKey = mkPreludeMiscIdUnique 131
1078 replicatePAIdKey = mkPreludeMiscIdUnique 132
1079 emptyPAIdKey = mkPreludeMiscIdUnique 133
1080 packPAIdKey = mkPreludeMiscIdUnique 134
1081 combinePAIdKey = mkPreludeMiscIdUnique 135
1082 intEqPAIdKey = mkPreludeMiscIdUnique 136
1084 ---------------- Template Haskell -------------------
1085 -- USES IdUniques 200-399
1086 -----------------------------------------------------
1090 %************************************************************************
1092 \subsection{Standard groups of types}
1094 %************************************************************************
1107 %************************************************************************
1109 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1111 %************************************************************************
1113 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1114 even though every numeric class has these two as a superclass,
1115 because the list of ambiguous dictionaries hasn't been simplified.
1123 ++ fractionalClassKeys
1125 fractionalClassKeys =
1126 [ fractionalClassKey
1132 -- the strictness analyser needs to know about numeric types
1133 -- (see SaAbsInt.lhs)
1134 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1138 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1139 -- and are: "classes defined in the Prelude or a standard library"
1140 standardClassKeys = derivableClassKeys ++ numericClassKeys
1141 ++ [randomClassKey, randomGenClassKey,
1143 monadClassKey, monadPlusClassKey,
1148 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1153 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1154 boundedClassKey, showClassKey, readClassKey ]