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
224 , mkClosureName, applyClosureName
225 , mkClosurePName, applyClosurePName
226 , lengthPAName, replicatePAName, emptyPAName, packPAName,
227 combinePAName, intEqPAName ]
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_UTILS = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Utils")
282 nDP_CLOSURE = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
283 nDP_INSTANCES = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Instances")
284 nDP_UARR = mkNDPModule FSLIT("Data.Array.Parallel.Unlifted.Flat.UArr")
286 mAIN = mkMainModule_ mAIN_NAME
287 rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
289 -- The ':xxx' makes a module name that the user can never
290 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
291 -- module name still starts with a capital letter, which keeps
292 -- the z-encoded version consistent.
293 iNTERACTIVE = mkMainModule FSLIT(":Interactive")
294 thFAKE = mkMainModule FSLIT(":THFake")
296 pRELUDE_NAME = mkModuleNameFS FSLIT("Prelude")
297 mAIN_NAME = mkModuleNameFS FSLIT("Main")
299 mkBaseModule :: FastString -> Module
300 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
302 mkBaseModule_ :: ModuleName -> Module
303 mkBaseModule_ m = mkModule basePackageId m
305 mkNDPModule :: FastString -> Module
306 mkNDPModule m = mkModule ndpPackageId (mkModuleNameFS m)
308 mkNDPModule_ :: ModuleName -> Module
309 mkNDPModule_ m = mkModule ndpPackageId m
311 mkMainModule :: FastString -> Module
312 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
314 mkMainModule_ :: ModuleName -> Module
315 mkMainModule_ m = mkModule mainPackageId m
318 %************************************************************************
320 \subsection{Constructing the names of tuples
322 %************************************************************************
325 mkTupleModule :: Boxity -> Arity -> Module
326 mkTupleModule Boxed 0 = gHC_BASE
327 mkTupleModule Boxed _ = dATA_TUP
328 mkTupleModule Unboxed _ = gHC_PRIM
332 %************************************************************************
336 %************************************************************************
339 main_RDR_Unqual = mkUnqual varName FSLIT("main")
340 -- We definitely don't want an Orig RdrName, because
341 -- main might, in principle, be imported into module Main
343 eq_RDR = nameRdrName eqName
344 ge_RDR = nameRdrName geName
345 ne_RDR = varQual_RDR gHC_BASE FSLIT("/=")
346 le_RDR = varQual_RDR gHC_BASE FSLIT("<=")
347 gt_RDR = varQual_RDR gHC_BASE FSLIT(">")
348 compare_RDR = varQual_RDR gHC_BASE FSLIT("compare")
349 ltTag_RDR = dataQual_RDR gHC_BASE FSLIT("LT")
350 eqTag_RDR = dataQual_RDR gHC_BASE FSLIT("EQ")
351 gtTag_RDR = dataQual_RDR gHC_BASE FSLIT("GT")
353 eqClass_RDR = nameRdrName eqClassName
354 numClass_RDR = nameRdrName numClassName
355 ordClass_RDR = nameRdrName ordClassName
356 enumClass_RDR = nameRdrName enumClassName
357 monadClass_RDR = nameRdrName monadClassName
359 map_RDR = varQual_RDR gHC_BASE FSLIT("map")
360 append_RDR = varQual_RDR gHC_BASE FSLIT("++")
362 foldr_RDR = nameRdrName foldrName
363 build_RDR = nameRdrName buildName
364 returnM_RDR = nameRdrName returnMName
365 bindM_RDR = nameRdrName bindMName
366 failM_RDR = nameRdrName failMName
368 and_RDR = nameRdrName andName
370 left_RDR = nameRdrName leftDataConName
371 right_RDR = nameRdrName rightDataConName
373 fromEnum_RDR = varQual_RDR gHC_ENUM FSLIT("fromEnum")
374 toEnum_RDR = varQual_RDR gHC_ENUM FSLIT("toEnum")
376 enumFrom_RDR = nameRdrName enumFromName
377 enumFromTo_RDR = nameRdrName enumFromToName
378 enumFromThen_RDR = nameRdrName enumFromThenName
379 enumFromThenTo_RDR = nameRdrName enumFromThenToName
381 ratioDataCon_RDR = nameRdrName ratioDataConName
382 plusInteger_RDR = nameRdrName plusIntegerName
383 timesInteger_RDR = nameRdrName timesIntegerName
385 ioDataCon_RDR = nameRdrName ioDataConName
387 eqString_RDR = nameRdrName eqStringName
388 unpackCString_RDR = nameRdrName unpackCStringName
389 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
390 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
392 newStablePtr_RDR = nameRdrName newStablePtrName
393 wordDataCon_RDR = dataQual_RDR gHC_WORD FSLIT("W#")
395 bindIO_RDR = nameRdrName bindIOName
396 returnIO_RDR = nameRdrName returnIOName
398 fromInteger_RDR = nameRdrName fromIntegerName
399 fromRational_RDR = nameRdrName fromRationalName
400 minus_RDR = nameRdrName minusName
401 times_RDR = varQual_RDR gHC_NUM FSLIT("*")
402 plus_RDR = varQual_RDR gHC_NUM FSLIT("+")
404 fromString_RDR = nameRdrName fromStringName
406 compose_RDR = varQual_RDR gHC_BASE FSLIT(".")
408 not_RDR = varQual_RDR gHC_BASE FSLIT("not")
409 getTag_RDR = varQual_RDR gHC_BASE FSLIT("getTag")
410 succ_RDR = varQual_RDR gHC_ENUM FSLIT("succ")
411 pred_RDR = varQual_RDR gHC_ENUM FSLIT("pred")
412 minBound_RDR = varQual_RDR gHC_ENUM FSLIT("minBound")
413 maxBound_RDR = varQual_RDR gHC_ENUM FSLIT("maxBound")
414 range_RDR = varQual_RDR gHC_ARR FSLIT("range")
415 inRange_RDR = varQual_RDR gHC_ARR FSLIT("inRange")
416 index_RDR = varQual_RDR gHC_ARR FSLIT("index")
417 unsafeIndex_RDR = varQual_RDR gHC_ARR FSLIT("unsafeIndex")
418 unsafeRangeSize_RDR = varQual_RDR gHC_ARR FSLIT("unsafeRangeSize")
420 readList_RDR = varQual_RDR gHC_READ FSLIT("readList")
421 readListDefault_RDR = varQual_RDR gHC_READ FSLIT("readListDefault")
422 readListPrec_RDR = varQual_RDR gHC_READ FSLIT("readListPrec")
423 readListPrecDefault_RDR = varQual_RDR gHC_READ FSLIT("readListPrecDefault")
424 readPrec_RDR = varQual_RDR gHC_READ FSLIT("readPrec")
425 parens_RDR = varQual_RDR gHC_READ FSLIT("parens")
426 choose_RDR = varQual_RDR gHC_READ FSLIT("choose")
427 lexP_RDR = varQual_RDR gHC_READ FSLIT("lexP")
429 punc_RDR = dataQual_RDR lEX FSLIT("Punc")
430 ident_RDR = dataQual_RDR lEX FSLIT("Ident")
431 symbol_RDR = dataQual_RDR lEX FSLIT("Symbol")
433 step_RDR = varQual_RDR rEAD_PREC FSLIT("step")
434 alt_RDR = varQual_RDR rEAD_PREC FSLIT("+++")
435 reset_RDR = varQual_RDR rEAD_PREC FSLIT("reset")
436 prec_RDR = varQual_RDR rEAD_PREC FSLIT("prec")
438 showList_RDR = varQual_RDR gHC_SHOW FSLIT("showList")
439 showList___RDR = varQual_RDR gHC_SHOW FSLIT("showList__")
440 showsPrec_RDR = varQual_RDR gHC_SHOW FSLIT("showsPrec")
441 showString_RDR = varQual_RDR gHC_SHOW FSLIT("showString")
442 showSpace_RDR = varQual_RDR gHC_SHOW FSLIT("showSpace")
443 showParen_RDR = varQual_RDR gHC_SHOW FSLIT("showParen")
445 typeOf_RDR = varQual_RDR tYPEABLE FSLIT("typeOf")
446 mkTypeRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyConApp")
447 mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon")
449 undefined_RDR = varQual_RDR gHC_ERR FSLIT("undefined")
451 crossDataCon_RDR = dataQual_RDR gHC_BASE FSLIT(":*:")
452 inlDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inl")
453 inrDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inr")
454 genUnitDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Unit")
456 ----------------------
457 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
458 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
459 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
460 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
463 %************************************************************************
465 \subsection{Known-key names}
467 %************************************************************************
469 Many of these Names are not really "built in", but some parts of the
470 compiler (notably the deriving mechanism) need to mention their names,
471 and it's convenient to write them all down in one place.
473 --MetaHaskell Extension add the constrs and the lower case case
474 -- guys as well (perhaps) e.g. see trueDataConName below
478 runMainIOName = varQual gHC_TOP_HANDLER FSLIT("runMainIO") runMainKey
480 orderingTyConName = tcQual gHC_BASE FSLIT("Ordering") orderingTyConKey
482 eitherTyConName = tcQual dATA_EITHER FSLIT("Either") eitherTyConKey
483 leftDataConName = conName dATA_EITHER FSLIT("Left") leftDataConKey
484 rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey
487 crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey
488 plusTyConName = tcQual gHC_BASE FSLIT(":+:") plusTyConKey
489 genUnitTyConName = tcQual gHC_BASE FSLIT("Unit") genUnitTyConKey
491 -- Base strings Strings
492 unpackCStringName = varQual gHC_BASE FSLIT("unpackCString#") unpackCStringIdKey
493 unpackCStringAppendName = varQual gHC_BASE FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
494 unpackCStringFoldrName = varQual gHC_BASE FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
495 unpackCStringUtf8Name = varQual gHC_BASE FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
496 eqStringName = varQual gHC_BASE FSLIT("eqString") eqStringIdKey
497 stringTyConName = tcQual gHC_BASE FSLIT("String") stringTyConKey
499 -- The 'inline' function
500 inlineIdName = varQual gHC_BASE FSLIT("inline") inlineIdKey
502 -- Base classes (Eq, Ord, Functor)
503 eqClassName = clsQual gHC_BASE FSLIT("Eq") eqClassKey
504 eqName = methName gHC_BASE FSLIT("==") eqClassOpKey
505 ordClassName = clsQual gHC_BASE FSLIT("Ord") ordClassKey
506 geName = methName gHC_BASE FSLIT(">=") geClassOpKey
507 functorClassName = clsQual gHC_BASE FSLIT("Functor") functorClassKey
510 monadClassName = clsQual gHC_BASE FSLIT("Monad") monadClassKey
511 thenMName = methName gHC_BASE FSLIT(">>") thenMClassOpKey
512 bindMName = methName gHC_BASE FSLIT(">>=") bindMClassOpKey
513 returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey
514 failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey
516 -- Random PrelBase functions
517 fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey
518 otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey
519 foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey
520 buildName = varQual gHC_BASE FSLIT("build") buildIdKey
521 augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey
522 appendName = varQual gHC_BASE FSLIT("++") appendIdKey
523 andName = varQual gHC_BASE FSLIT("&&") andIdKey
524 orName = varQual gHC_BASE FSLIT("||") orIdKey
525 assertName = varQual gHC_BASE FSLIT("assert") assertIdKey
526 breakpointName = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
527 breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
528 breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
529 opaqueTyConName = tcQual gHC_BASE FSLIT("Opaque") opaqueTyConKey
534 (mkOccNameFS varName FSLIT("breakpointJump"))
536 breakpointCondJumpName
538 breakpointCondJumpIdKey
539 (mkOccNameFS varName FSLIT("breakpointCondJump"))
541 breakpointAutoJumpName
543 breakpointAutoJumpIdKey
544 (mkOccNameFS varName FSLIT("breakpointAutoJump"))
548 fstName = varQual dATA_TUP FSLIT("fst") fstIdKey
549 sndName = varQual dATA_TUP FSLIT("snd") sndIdKey
552 numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey
553 fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
554 minusName = methName gHC_NUM FSLIT("-") minusClassOpKey
555 negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey
556 plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
557 timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
558 integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
559 smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
560 largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
562 -- PrelReal types and classes
563 rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
564 ratioTyConName = tcQual gHC_REAL FSLIT("Ratio") ratioTyConKey
565 ratioDataConName = conName gHC_REAL FSLIT(":%") ratioDataConKey
566 realClassName = clsQual gHC_REAL FSLIT("Real") realClassKey
567 integralClassName = clsQual gHC_REAL FSLIT("Integral") integralClassKey
568 realFracClassName = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
569 fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
570 fromRationalName = methName gHC_REAL FSLIT("fromRational") fromRationalClassOpKey
573 floatingClassName = clsQual gHC_FLOAT FSLIT("Floating") floatingClassKey
574 realFloatClassName = clsQual gHC_FLOAT FSLIT("RealFloat") realFloatClassKey
577 ixClassName = clsQual gHC_ARR FSLIT("Ix") ixClassKey
580 typeableClassName = clsQual tYPEABLE FSLIT("Typeable") typeableClassKey
581 typeable1ClassName = clsQual tYPEABLE FSLIT("Typeable1") typeable1ClassKey
582 typeable2ClassName = clsQual tYPEABLE FSLIT("Typeable2") typeable2ClassKey
583 typeable3ClassName = clsQual tYPEABLE FSLIT("Typeable3") typeable3ClassKey
584 typeable4ClassName = clsQual tYPEABLE FSLIT("Typeable4") typeable4ClassKey
585 typeable5ClassName = clsQual tYPEABLE FSLIT("Typeable5") typeable5ClassKey
586 typeable6ClassName = clsQual tYPEABLE FSLIT("Typeable6") typeable6ClassKey
587 typeable7ClassName = clsQual tYPEABLE FSLIT("Typeable7") typeable7ClassKey
589 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
590 , typeable3ClassName, typeable4ClassName, typeable5ClassName
591 , typeable6ClassName, typeable7ClassName ]
594 dataClassName = clsQual gENERICS FSLIT("Data") dataClassKey
597 assertErrorName = varQual gHC_ERR FSLIT("assertError") assertErrorIdKey
599 -- Enum module (Enum, Bounded)
600 enumClassName = clsQual gHC_ENUM FSLIT("Enum") enumClassKey
601 enumFromName = methName gHC_ENUM FSLIT("enumFrom") enumFromClassOpKey
602 enumFromToName = methName gHC_ENUM FSLIT("enumFromTo") enumFromToClassOpKey
603 enumFromThenName = methName gHC_ENUM FSLIT("enumFromThen") enumFromThenClassOpKey
604 enumFromThenToName = methName gHC_ENUM FSLIT("enumFromThenTo") enumFromThenToClassOpKey
605 boundedClassName = clsQual gHC_ENUM FSLIT("Bounded") boundedClassKey
608 concatName = varQual gHC_LIST FSLIT("concat") concatIdKey
609 filterName = varQual gHC_LIST FSLIT("filter") filterIdKey
610 zipName = varQual gHC_LIST FSLIT("zip") zipIdKey
613 showClassName = clsQual gHC_SHOW FSLIT("Show") showClassKey
616 readClassName = clsQual gHC_READ FSLIT("Read") readClassKey
618 -- parallel array types and functions
619 enumFromToPName = varQual gHC_PARR FSLIT("enumFromToP") enumFromToPIdKey
620 enumFromThenToPName= varQual gHC_PARR FSLIT("enumFromThenToP") enumFromThenToPIdKey
621 nullPName = varQual gHC_PARR FSLIT("nullP") nullPIdKey
622 lengthPName = varQual gHC_PARR FSLIT("lengthP") lengthPIdKey
623 replicatePName = varQual gHC_PARR FSLIT("replicateP") replicatePIdKey
624 mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey
625 filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey
626 zipPName = varQual gHC_PARR FSLIT("zipP") zipPIdKey
627 crossMapPName = varQual gHC_PARR FSLIT("crossMapP") crossMapPIdKey
628 indexPName = varQual gHC_PARR FSLIT("!:") indexPIdKey
629 toPName = varQual gHC_PARR FSLIT("toP") toPIdKey
630 bpermutePName = varQual gHC_PARR FSLIT("bpermuteP") bpermutePIdKey
631 bpermuteDftPName = varQual gHC_PARR FSLIT("bpermuteDftP") bpermuteDftPIdKey
632 indexOfPName = varQual gHC_PARR FSLIT("indexOfP") indexOfPIdKey
635 ioTyConName = tcQual gHC_IO_BASE FSLIT("IO") ioTyConKey
636 ioDataConName = conName gHC_IO_BASE FSLIT("IO") ioDataConKey
637 thenIOName = varQual gHC_IO_BASE FSLIT("thenIO") thenIOIdKey
638 bindIOName = varQual gHC_IO_BASE FSLIT("bindIO") bindIOIdKey
639 returnIOName = varQual gHC_IO_BASE FSLIT("returnIO") returnIOIdKey
640 failIOName = varQual gHC_IO_BASE FSLIT("failIO") failIOIdKey
643 printName = varQual sYSTEM_IO FSLIT("print") printIdKey
645 -- Int, Word, and Addr things
646 int8TyConName = tcQual gHC_INT FSLIT("Int8") int8TyConKey
647 int16TyConName = tcQual gHC_INT FSLIT("Int16") int16TyConKey
648 int32TyConName = tcQual gHC_INT FSLIT("Int32") int32TyConKey
649 int64TyConName = tcQual gHC_INT FSLIT("Int64") int64TyConKey
652 word8TyConName = tcQual gHC_WORD FSLIT("Word8") word8TyConKey
653 word16TyConName = tcQual gHC_WORD FSLIT("Word16") word16TyConKey
654 word32TyConName = tcQual gHC_WORD FSLIT("Word32") word32TyConKey
655 word64TyConName = tcQual gHC_WORD FSLIT("Word64") word64TyConKey
656 wordTyConName = tcQual gHC_WORD FSLIT("Word") wordTyConKey
657 wordDataConName = conName gHC_WORD FSLIT("W#") wordDataConKey
660 ptrTyConName = tcQual gHC_PTR FSLIT("Ptr") ptrTyConKey
661 funPtrTyConName = tcQual gHC_PTR FSLIT("FunPtr") funPtrTyConKey
663 -- Foreign objects and weak pointers
664 stablePtrTyConName = tcQual gHC_STABLE FSLIT("StablePtr") stablePtrTyConKey
665 newStablePtrName = varQual gHC_STABLE FSLIT("newStablePtr") newStablePtrIdKey
668 runSTRepName = varQual gHC_ST FSLIT("runSTRep") runSTRepIdKey
670 -- Recursive-do notation
671 monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
672 mfixName = methName mONAD_FIX FSLIT("mfix") mfixIdKey
675 arrAName = varQual aRROW FSLIT("arr") arrAIdKey
676 composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
677 firstAName = varQual aRROW FSLIT("first") firstAIdKey
678 appAName = varQual aRROW FSLIT("app") appAIdKey
679 choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
680 loopAName = varQual aRROW FSLIT("loop") loopAIdKey
682 -- Other classes, needed for type defaulting
683 monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey
684 randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey
685 randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
686 isStringClassName = clsQual dATA_STRING FSLIT("IsString") isStringClassKey
689 objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey
690 -- objectTyConName was "wTcQual", but that's gone now, and
691 -- I can't see why it was wired in anyway...
692 unmarshalObjectName = varQual dOTNET FSLIT("unmarshalObject") unmarshalObjectIdKey
693 marshalObjectName = varQual dOTNET FSLIT("marshalObject") marshalObjectIdKey
694 marshalStringName = varQual dOTNET FSLIT("marshalString") marshalStringIdKey
695 unmarshalStringName = varQual dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
696 checkDotnetResName = varQual dOTNET FSLIT("checkResult") checkDotnetResNameIdKey
699 parrayTyConName = tcQual nDP_PARRAY FSLIT("PArray") parrayTyConKey
700 paTyConName = tcQual nDP_PARRAY FSLIT("PA") paTyConKey
701 preprTyConName = tcQual nDP_PARRAY FSLIT("PRepr") preprTyConKey
702 prTyConName = tcQual nDP_PARRAY FSLIT("PR") prTyConKey
703 uarrTyConName = tcQual nDP_UARR FSLIT("UArr") uarrTyConKey
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 intEqPAName = varQual nDP_UTILS FSLIT("intEqPA") intEqPAIdKey
711 closureTyConName = tcQual nDP_CLOSURE FSLIT(":->") closureTyConKey
712 mkClosureName = varQual nDP_CLOSURE FSLIT("mkClosure") mkClosureIdKey
713 applyClosureName = varQual nDP_CLOSURE FSLIT("$:") applyClosureIdKey
714 mkClosurePName = varQual nDP_CLOSURE FSLIT("mkClosureP") mkClosurePIdKey
715 applyClosurePName = varQual nDP_CLOSURE FSLIT("$:^") applyClosurePIdKey
718 %************************************************************************
720 \subsection{Local helpers}
722 %************************************************************************
724 All these are original names; hence mkOrig
727 varQual = mk_known_key_name varName
728 tcQual = mk_known_key_name tcName
729 clsQual = mk_known_key_name clsName
731 mk_known_key_name space mod str uniq
732 = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan
734 conName :: Module -> FastString -> Unique -> Name
736 = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan
738 methName :: Module -> FastString -> Unique -> Name
739 methName mod occ uniq
740 = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan
743 %************************************************************************
745 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
747 %************************************************************************
748 --MetaHaskell extension hand allocate keys here
751 boundedClassKey = mkPreludeClassUnique 1
752 enumClassKey = mkPreludeClassUnique 2
753 eqClassKey = mkPreludeClassUnique 3
754 floatingClassKey = mkPreludeClassUnique 5
755 fractionalClassKey = mkPreludeClassUnique 6
756 integralClassKey = mkPreludeClassUnique 7
757 monadClassKey = mkPreludeClassUnique 8
758 dataClassKey = mkPreludeClassUnique 9
759 functorClassKey = mkPreludeClassUnique 10
760 numClassKey = mkPreludeClassUnique 11
761 ordClassKey = mkPreludeClassUnique 12
762 readClassKey = mkPreludeClassUnique 13
763 realClassKey = mkPreludeClassUnique 14
764 realFloatClassKey = mkPreludeClassUnique 15
765 realFracClassKey = mkPreludeClassUnique 16
766 showClassKey = mkPreludeClassUnique 17
767 ixClassKey = mkPreludeClassUnique 18
769 typeableClassKey = mkPreludeClassUnique 20
770 typeable1ClassKey = mkPreludeClassUnique 21
771 typeable2ClassKey = mkPreludeClassUnique 22
772 typeable3ClassKey = mkPreludeClassUnique 23
773 typeable4ClassKey = mkPreludeClassUnique 24
774 typeable5ClassKey = mkPreludeClassUnique 25
775 typeable6ClassKey = mkPreludeClassUnique 26
776 typeable7ClassKey = mkPreludeClassUnique 27
778 monadFixClassKey = mkPreludeClassUnique 28
780 monadPlusClassKey = mkPreludeClassUnique 30
781 randomClassKey = mkPreludeClassUnique 31
782 randomGenClassKey = mkPreludeClassUnique 32
784 isStringClassKey = mkPreludeClassUnique 33
787 %************************************************************************
789 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
791 %************************************************************************
794 addrPrimTyConKey = mkPreludeTyConUnique 1
795 arrayPrimTyConKey = mkPreludeTyConUnique 3
796 boolTyConKey = mkPreludeTyConUnique 4
797 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
798 charPrimTyConKey = mkPreludeTyConUnique 7
799 charTyConKey = mkPreludeTyConUnique 8
800 doublePrimTyConKey = mkPreludeTyConUnique 9
801 doubleTyConKey = mkPreludeTyConUnique 10
802 floatPrimTyConKey = mkPreludeTyConUnique 11
803 floatTyConKey = mkPreludeTyConUnique 12
804 funTyConKey = mkPreludeTyConUnique 13
805 intPrimTyConKey = mkPreludeTyConUnique 14
806 intTyConKey = mkPreludeTyConUnique 15
807 int8TyConKey = mkPreludeTyConUnique 16
808 int16TyConKey = mkPreludeTyConUnique 17
809 int32PrimTyConKey = mkPreludeTyConUnique 18
810 int32TyConKey = mkPreludeTyConUnique 19
811 int64PrimTyConKey = mkPreludeTyConUnique 20
812 int64TyConKey = mkPreludeTyConUnique 21
813 integerTyConKey = mkPreludeTyConUnique 22
814 listTyConKey = mkPreludeTyConUnique 23
815 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
816 weakPrimTyConKey = mkPreludeTyConUnique 27
817 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
818 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
819 orderingTyConKey = mkPreludeTyConUnique 30
820 mVarPrimTyConKey = mkPreludeTyConUnique 31
821 ratioTyConKey = mkPreludeTyConUnique 32
822 rationalTyConKey = mkPreludeTyConUnique 33
823 realWorldTyConKey = mkPreludeTyConUnique 34
824 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
825 stablePtrTyConKey = mkPreludeTyConUnique 36
827 anyPrimTyConKey = mkPreludeTyConUnique 37
828 anyPrimTyCon1Key = mkPreludeTyConUnique 38
830 statePrimTyConKey = mkPreludeTyConUnique 50
831 stableNamePrimTyConKey = mkPreludeTyConUnique 51
832 stableNameTyConKey = mkPreludeTyConUnique 52
833 mutVarPrimTyConKey = mkPreludeTyConUnique 55
834 ioTyConKey = mkPreludeTyConUnique 56
835 wordPrimTyConKey = mkPreludeTyConUnique 58
836 wordTyConKey = mkPreludeTyConUnique 59
837 word8TyConKey = mkPreludeTyConUnique 60
838 word16TyConKey = mkPreludeTyConUnique 61
839 word32PrimTyConKey = mkPreludeTyConUnique 62
840 word32TyConKey = mkPreludeTyConUnique 63
841 word64PrimTyConKey = mkPreludeTyConUnique 64
842 word64TyConKey = mkPreludeTyConUnique 65
843 liftedConKey = mkPreludeTyConUnique 66
844 unliftedConKey = mkPreludeTyConUnique 67
845 anyBoxConKey = mkPreludeTyConUnique 68
846 kindConKey = mkPreludeTyConUnique 69
847 boxityConKey = mkPreludeTyConUnique 70
848 typeConKey = mkPreludeTyConUnique 71
849 threadIdPrimTyConKey = mkPreludeTyConUnique 72
850 bcoPrimTyConKey = mkPreludeTyConUnique 73
851 ptrTyConKey = mkPreludeTyConUnique 74
852 funPtrTyConKey = mkPreludeTyConUnique 75
853 tVarPrimTyConKey = mkPreludeTyConUnique 76
855 -- Generic Type Constructors
856 crossTyConKey = mkPreludeTyConUnique 79
857 plusTyConKey = mkPreludeTyConUnique 80
858 genUnitTyConKey = mkPreludeTyConUnique 81
860 -- Parallel array type constructor
861 parrTyConKey = mkPreludeTyConUnique 82
864 objectTyConKey = mkPreludeTyConUnique 83
866 eitherTyConKey = mkPreludeTyConUnique 84
868 -- Super Kinds constructors
869 tySuperKindTyConKey = mkPreludeTyConUnique 85
870 coSuperKindTyConKey = mkPreludeTyConUnique 86
873 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
874 openTypeKindTyConKey = mkPreludeTyConUnique 88
875 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
876 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
877 argTypeKindTyConKey = mkPreludeTyConUnique 91
879 -- Coercion constructors
880 symCoercionTyConKey = mkPreludeTyConUnique 93
881 transCoercionTyConKey = mkPreludeTyConUnique 94
882 leftCoercionTyConKey = mkPreludeTyConUnique 95
883 rightCoercionTyConKey = mkPreludeTyConUnique 96
884 instCoercionTyConKey = mkPreludeTyConUnique 97
885 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
887 unknownTyConKey = mkPreludeTyConUnique 99
888 unknown1TyConKey = mkPreludeTyConUnique 130
889 unknown2TyConKey = mkPreludeTyConUnique 131
890 unknown3TyConKey = mkPreludeTyConUnique 132
891 opaqueTyConKey = mkPreludeTyConUnique 133
893 stringTyConKey = mkPreludeTyConUnique 134
895 parrayTyConKey = mkPreludeTyConUnique 135
896 closureTyConKey = mkPreludeTyConUnique 136
897 paTyConKey = mkPreludeTyConUnique 137
898 preprTyConKey = mkPreludeTyConUnique 138
899 prTyConKey = mkPreludeTyConUnique 139
900 uarrTyConKey = mkPreludeTyConUnique 140
903 ---------------- Template Haskell -------------------
904 -- USES TyConUniques 100-129
905 -----------------------------------------------------
907 unitTyConKey = mkTupleTyConUnique Boxed 0
910 %************************************************************************
912 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
914 %************************************************************************
917 charDataConKey = mkPreludeDataConUnique 1
918 consDataConKey = mkPreludeDataConUnique 2
919 doubleDataConKey = mkPreludeDataConUnique 3
920 falseDataConKey = mkPreludeDataConUnique 4
921 floatDataConKey = mkPreludeDataConUnique 5
922 intDataConKey = mkPreludeDataConUnique 6
923 smallIntegerDataConKey = mkPreludeDataConUnique 7
924 largeIntegerDataConKey = mkPreludeDataConUnique 8
925 nilDataConKey = mkPreludeDataConUnique 11
926 ratioDataConKey = mkPreludeDataConUnique 12
927 stableNameDataConKey = mkPreludeDataConUnique 14
928 trueDataConKey = mkPreludeDataConUnique 15
929 wordDataConKey = mkPreludeDataConUnique 16
930 ioDataConKey = mkPreludeDataConUnique 17
932 -- Generic data constructors
933 crossDataConKey = mkPreludeDataConUnique 20
934 inlDataConKey = mkPreludeDataConUnique 21
935 inrDataConKey = mkPreludeDataConUnique 22
936 genUnitDataConKey = mkPreludeDataConUnique 23
938 -- Data constructor for parallel arrays
939 parrDataConKey = mkPreludeDataConUnique 24
941 leftDataConKey = mkPreludeDataConUnique 25
942 rightDataConKey = mkPreludeDataConUnique 26
945 %************************************************************************
947 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
949 %************************************************************************
952 absentErrorIdKey = mkPreludeMiscIdUnique 1
953 augmentIdKey = mkPreludeMiscIdUnique 3
954 appendIdKey = mkPreludeMiscIdUnique 4
955 buildIdKey = mkPreludeMiscIdUnique 5
956 errorIdKey = mkPreludeMiscIdUnique 6
957 foldlIdKey = mkPreludeMiscIdUnique 7
958 foldrIdKey = mkPreludeMiscIdUnique 8
959 recSelErrorIdKey = mkPreludeMiscIdUnique 9
960 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
961 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
962 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
963 integerZeroIdKey = mkPreludeMiscIdUnique 13
964 int2IntegerIdKey = mkPreludeMiscIdUnique 14
965 seqIdKey = mkPreludeMiscIdUnique 15
966 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
967 eqStringIdKey = mkPreludeMiscIdUnique 17
968 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
969 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
970 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
971 parErrorIdKey = mkPreludeMiscIdUnique 21
972 parIdKey = mkPreludeMiscIdUnique 22
973 patErrorIdKey = mkPreludeMiscIdUnique 23
974 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
975 recConErrorIdKey = mkPreludeMiscIdUnique 25
976 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
977 traceIdKey = mkPreludeMiscIdUnique 27
978 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
979 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
980 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
981 unpackCStringIdKey = mkPreludeMiscIdUnique 31
983 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
984 concatIdKey = mkPreludeMiscIdUnique 33
985 filterIdKey = mkPreludeMiscIdUnique 34
986 zipIdKey = mkPreludeMiscIdUnique 35
987 bindIOIdKey = mkPreludeMiscIdUnique 36
988 returnIOIdKey = mkPreludeMiscIdUnique 37
989 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
990 newStablePtrIdKey = mkPreludeMiscIdUnique 39
991 plusIntegerIdKey = mkPreludeMiscIdUnique 41
992 timesIntegerIdKey = mkPreludeMiscIdUnique 42
993 printIdKey = mkPreludeMiscIdUnique 43
994 failIOIdKey = mkPreludeMiscIdUnique 44
995 nullAddrIdKey = mkPreludeMiscIdUnique 46
996 voidArgIdKey = mkPreludeMiscIdUnique 47
997 fstIdKey = mkPreludeMiscIdUnique 49
998 sndIdKey = mkPreludeMiscIdUnique 50
999 otherwiseIdKey = mkPreludeMiscIdUnique 51
1000 assertIdKey = mkPreludeMiscIdUnique 53
1001 runSTRepIdKey = mkPreludeMiscIdUnique 54
1003 rootMainKey = mkPreludeMiscIdUnique 55
1004 runMainKey = mkPreludeMiscIdUnique 56
1006 andIdKey = mkPreludeMiscIdUnique 57
1007 orIdKey = mkPreludeMiscIdUnique 58
1008 thenIOIdKey = mkPreludeMiscIdUnique 59
1009 lazyIdKey = mkPreludeMiscIdUnique 60
1010 assertErrorIdKey = mkPreludeMiscIdUnique 61
1012 breakpointIdKey = mkPreludeMiscIdUnique 62
1013 breakpointCondIdKey = mkPreludeMiscIdUnique 63
1014 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
1015 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
1016 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
1017 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
1019 inlineIdKey = mkPreludeMiscIdUnique 68
1021 -- Parallel array functions
1022 nullPIdKey = mkPreludeMiscIdUnique 80
1023 lengthPIdKey = mkPreludeMiscIdUnique 81
1024 replicatePIdKey = mkPreludeMiscIdUnique 82
1025 mapPIdKey = mkPreludeMiscIdUnique 83
1026 filterPIdKey = mkPreludeMiscIdUnique 84
1027 zipPIdKey = mkPreludeMiscIdUnique 85
1028 crossMapPIdKey = mkPreludeMiscIdUnique 86
1029 indexPIdKey = mkPreludeMiscIdUnique 87
1030 toPIdKey = mkPreludeMiscIdUnique 88
1031 enumFromToPIdKey = mkPreludeMiscIdUnique 89
1032 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
1033 bpermutePIdKey = mkPreludeMiscIdUnique 91
1034 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
1035 indexOfPIdKey = mkPreludeMiscIdUnique 93
1038 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
1039 marshalObjectIdKey = mkPreludeMiscIdUnique 95
1040 marshalStringIdKey = mkPreludeMiscIdUnique 96
1041 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
1042 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1046 Certain class operations from Prelude classes. They get their own
1047 uniques so we can look them up easily when we want to conjure them up
1048 during type checking.
1051 -- Just a place holder for unbound variables produced by the renamer:
1052 unboundKey = mkPreludeMiscIdUnique 101
1054 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1055 minusClassOpKey = mkPreludeMiscIdUnique 103
1056 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1057 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1058 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1059 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1060 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1061 eqClassOpKey = mkPreludeMiscIdUnique 109
1062 geClassOpKey = mkPreludeMiscIdUnique 110
1063 negateClassOpKey = mkPreludeMiscIdUnique 111
1064 failMClassOpKey = mkPreludeMiscIdUnique 112
1065 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1066 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1067 returnMClassOpKey = mkPreludeMiscIdUnique 117
1069 -- Recursive do notation
1070 mfixIdKey = mkPreludeMiscIdUnique 118
1073 arrAIdKey = mkPreludeMiscIdUnique 119
1074 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1075 firstAIdKey = mkPreludeMiscIdUnique 121
1076 appAIdKey = mkPreludeMiscIdUnique 122
1077 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1078 loopAIdKey = mkPreludeMiscIdUnique 124
1080 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1082 -- Flattened parallel array functions
1083 mkClosureIdKey = mkPreludeMiscIdUnique 126
1084 applyClosureIdKey = mkPreludeMiscIdUnique 127
1085 mkClosurePIdKey = mkPreludeMiscIdUnique 128
1086 applyClosurePIdKey = mkPreludeMiscIdUnique 129
1087 closurePAIdKey = mkPreludeMiscIdUnique 130
1088 lengthPAIdKey = mkPreludeMiscIdUnique 131
1089 replicatePAIdKey = mkPreludeMiscIdUnique 132
1090 emptyPAIdKey = mkPreludeMiscIdUnique 133
1091 packPAIdKey = mkPreludeMiscIdUnique 134
1092 combinePAIdKey = mkPreludeMiscIdUnique 135
1093 intEqPAIdKey = mkPreludeMiscIdUnique 136
1094 mkPRIdKey = mkPreludeMiscIdUnique 137
1096 ---------------- Template Haskell -------------------
1097 -- USES IdUniques 200-399
1098 -----------------------------------------------------
1102 %************************************************************************
1104 \subsection{Standard groups of types}
1106 %************************************************************************
1119 %************************************************************************
1121 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1123 %************************************************************************
1125 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1126 even though every numeric class has these two as a superclass,
1127 because the list of ambiguous dictionaries hasn't been simplified.
1135 ++ fractionalClassKeys
1137 fractionalClassKeys =
1138 [ fractionalClassKey
1144 -- the strictness analyser needs to know about numeric types
1145 -- (see SaAbsInt.lhs)
1146 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1150 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1151 -- and are: "classes defined in the Prelude or a standard library"
1152 standardClassKeys = derivableClassKeys ++ numericClassKeys
1153 ++ [randomClassKey, randomGenClassKey,
1155 monadClassKey, monadPlusClassKey,
1160 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1165 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1166 boundedClassKey, showClassKey, readClassKey ]