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 -- The above warning supression flag is a temporary kludge.
41 -- While working on this module you are encouraged to remove it and fix
42 -- any warnings in the module. See
43 -- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
47 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
49 -----------------------------------------------------------
50 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
51 -- (b) Uniques e.g. intTyConKey
52 -- (c) Groups of classes and types
53 -- (d) miscellaneous things
54 -- So many that we export them all
57 #include "HsVersions.h"
60 import Module ( Module, ModuleName, mkModule, mkModuleNameFS )
61 import OccName ( dataName, tcName, clsName, varName, mkOccNameFS,
63 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
64 import Unique ( Unique, Uniquable(..), hasKey,
65 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
66 mkPreludeTyConUnique, mkPreludeClassUnique,
69 import BasicTypes ( Boxity(..), Arity )
70 import Name ( Name, mkInternalName, mkExternalName )
76 %************************************************************************
78 \subsection{Local Names}
80 %************************************************************************
82 This *local* name is used by the interactive stuff
85 itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcSpan
89 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
90 -- during compiler debugging.
91 mkUnboundName :: RdrName -> Name
92 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan
94 isUnboundName :: Name -> Bool
95 isUnboundName name = name `hasKey` unboundKey
99 %************************************************************************
101 \subsection{Known key Names}
103 %************************************************************************
105 This section tells what the compiler knows about the assocation of
106 names with uniques. These ones are the *non* wired-in ones. The
107 wired in ones are defined in TysWiredIn etc.
110 basicKnownKeyNames :: [Name]
113 ++ typeableClassNames
114 ++ [ -- Type constructors (synonyms especially)
115 ioTyConName, ioDataConName,
122 integerTyConName, smallIntegerDataConName, largeIntegerDataConName,
124 -- Classes. *Must* include:
125 -- classes that are grabbed by key (e.g., eqClassKey)
126 -- classes in "Class.standardClassKeys" (quite a few)
127 eqClassName, -- mentioned, derivable
128 ordClassName, -- derivable
129 boundedClassName, -- derivable
130 numClassName, -- mentioned, numeric
131 enumClassName, -- derivable
134 realClassName, -- numeric
135 integralClassName, -- numeric
136 fractionalClassName, -- numeric
137 floatingClassName, -- numeric
138 realFracClassName, -- numeric
139 realFloatClassName, -- numeric
144 negateName, minusName,
145 fromRationalName, fromIntegerName,
152 enumFromName, enumFromThenName,
153 enumFromThenToName, enumFromToName,
154 enumFromToPName, enumFromThenToPName,
157 thenIOName, bindIOName, returnIOName, failIOName,
158 failMName, bindMName, thenMName, returnMName,
164 arrAName, composeAName, firstAName,
165 appAName, choiceAName, loopAName,
180 unpackCStringName, unpackCStringAppendName,
181 unpackCStringFoldrName, unpackCStringUtf8Name,
184 concatName, filterName,
185 zipName, foldrName, buildName, augmentName, appendName,
187 -- Parallel array operations
188 nullPName, lengthPName, replicatePName, mapPName,
189 filterPName, zipPName, crossMapPName, indexPName,
190 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
192 -- FFI primitive types that are not wired-in.
193 stablePtrTyConName, ptrTyConName, funPtrTyConName,
194 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
195 wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
198 otherwiseIdName, inlineIdName,
199 plusIntegerName, timesIntegerName,
200 eqStringName, assertName, breakpointName, breakpointCondName,
201 breakpointAutoName, opaqueTyConName,
202 assertErrorName, runSTRepName,
203 printName, fstName, sndName,
206 monadFixClassName, mfixName,
209 randomClassName, randomGenClassName, monadPlusClassName,
215 , eitherTyConName, leftDataConName, rightDataConName
218 , objectTyConName, marshalObjectName, unmarshalObjectName
219 , marshalStringName, unmarshalStringName, checkDotnetResName
222 genericTyConNames :: [Name]
223 genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
227 %************************************************************************
229 \subsection{Module names}
231 %************************************************************************
234 --MetaHaskell Extension Add a new module here
236 pRELUDE = mkBaseModule_ pRELUDE_NAME
237 gHC_PRIM = mkBaseModule FSLIT("GHC.Prim") -- Primitive types and values
238 gHC_BASE = mkBaseModule FSLIT("GHC.Base")
239 gHC_ENUM = mkBaseModule FSLIT("GHC.Enum")
240 gHC_SHOW = mkBaseModule FSLIT("GHC.Show")
241 gHC_READ = mkBaseModule FSLIT("GHC.Read")
242 gHC_NUM = mkBaseModule FSLIT("GHC.Num")
243 gHC_LIST = mkBaseModule FSLIT("GHC.List")
244 gHC_PARR = mkBaseModule FSLIT("GHC.PArr")
245 dATA_TUP = mkBaseModule FSLIT("Data.Tuple")
246 dATA_EITHER = mkBaseModule FSLIT("Data.Either")
247 dATA_STRING = mkBaseModule FSLIT("Data.String")
248 gHC_PACK = mkBaseModule FSLIT("GHC.Pack")
249 gHC_CONC = mkBaseModule FSLIT("GHC.Conc")
250 gHC_IO_BASE = mkBaseModule FSLIT("GHC.IOBase")
251 gHC_ST = mkBaseModule FSLIT("GHC.ST")
252 gHC_ARR = mkBaseModule FSLIT("GHC.Arr")
253 gHC_STABLE = mkBaseModule FSLIT("GHC.Stable")
254 gHC_ADDR = mkBaseModule FSLIT("GHC.Addr")
255 gHC_PTR = mkBaseModule FSLIT("GHC.Ptr")
256 gHC_ERR = mkBaseModule FSLIT("GHC.Err")
257 gHC_REAL = mkBaseModule FSLIT("GHC.Real")
258 gHC_FLOAT = mkBaseModule FSLIT("GHC.Float")
259 gHC_TOP_HANDLER = mkBaseModule FSLIT("GHC.TopHandler")
260 sYSTEM_IO = mkBaseModule FSLIT("System.IO")
261 dYNAMIC = mkBaseModule FSLIT("Data.Dynamic")
262 tYPEABLE = mkBaseModule FSLIT("Data.Typeable")
263 gENERICS = mkBaseModule FSLIT("Data.Generics.Basics")
264 dOTNET = mkBaseModule FSLIT("GHC.Dotnet")
265 rEAD_PREC = mkBaseModule FSLIT("Text.ParserCombinators.ReadPrec")
266 lEX = mkBaseModule FSLIT("Text.Read.Lex")
267 gHC_INT = mkBaseModule FSLIT("GHC.Int")
268 gHC_WORD = mkBaseModule FSLIT("GHC.Word")
269 mONAD = mkBaseModule FSLIT("Control.Monad")
270 mONAD_FIX = mkBaseModule FSLIT("Control.Monad.Fix")
271 aRROW = mkBaseModule FSLIT("Control.Arrow")
272 rANDOM = mkBaseModule FSLIT("System.Random")
273 gLA_EXTS = mkBaseModule FSLIT("GHC.Exts")
275 mAIN = mkMainModule_ mAIN_NAME
276 rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
278 -- The ':xxx' makes a module name that the user can never
279 -- use himself. The z-encoding for ':' is "ZC", so the z-encoded
280 -- module name still starts with a capital letter, which keeps
281 -- the z-encoded version consistent.
282 iNTERACTIVE = mkMainModule FSLIT(":Interactive")
283 thFAKE = mkMainModule FSLIT(":THFake")
285 pRELUDE_NAME = mkModuleNameFS FSLIT("Prelude")
286 mAIN_NAME = mkModuleNameFS FSLIT("Main")
288 mkBaseModule :: FastString -> Module
289 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
291 mkBaseModule_ :: ModuleName -> Module
292 mkBaseModule_ m = mkModule basePackageId m
294 mkMainModule :: FastString -> Module
295 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
297 mkMainModule_ :: ModuleName -> Module
298 mkMainModule_ m = mkModule mainPackageId m
301 %************************************************************************
303 \subsection{Constructing the names of tuples
305 %************************************************************************
308 mkTupleModule :: Boxity -> Arity -> Module
309 mkTupleModule Boxed 0 = gHC_BASE
310 mkTupleModule Boxed _ = dATA_TUP
311 mkTupleModule Unboxed _ = gHC_PRIM
315 %************************************************************************
319 %************************************************************************
322 main_RDR_Unqual = mkUnqual varName FSLIT("main")
323 -- We definitely don't want an Orig RdrName, because
324 -- main might, in principle, be imported into module Main
326 eq_RDR = nameRdrName eqName
327 ge_RDR = nameRdrName geName
328 ne_RDR = varQual_RDR gHC_BASE FSLIT("/=")
329 le_RDR = varQual_RDR gHC_BASE FSLIT("<=")
330 gt_RDR = varQual_RDR gHC_BASE FSLIT(">")
331 compare_RDR = varQual_RDR gHC_BASE FSLIT("compare")
332 ltTag_RDR = dataQual_RDR gHC_BASE FSLIT("LT")
333 eqTag_RDR = dataQual_RDR gHC_BASE FSLIT("EQ")
334 gtTag_RDR = dataQual_RDR gHC_BASE FSLIT("GT")
336 eqClass_RDR = nameRdrName eqClassName
337 numClass_RDR = nameRdrName numClassName
338 ordClass_RDR = nameRdrName ordClassName
339 enumClass_RDR = nameRdrName enumClassName
340 monadClass_RDR = nameRdrName monadClassName
342 map_RDR = varQual_RDR gHC_BASE FSLIT("map")
343 append_RDR = varQual_RDR gHC_BASE FSLIT("++")
345 foldr_RDR = nameRdrName foldrName
346 build_RDR = nameRdrName buildName
347 returnM_RDR = nameRdrName returnMName
348 bindM_RDR = nameRdrName bindMName
349 failM_RDR = nameRdrName failMName
351 and_RDR = nameRdrName andName
353 left_RDR = nameRdrName leftDataConName
354 right_RDR = nameRdrName rightDataConName
356 fromEnum_RDR = varQual_RDR gHC_ENUM FSLIT("fromEnum")
357 toEnum_RDR = varQual_RDR gHC_ENUM FSLIT("toEnum")
359 enumFrom_RDR = nameRdrName enumFromName
360 enumFromTo_RDR = nameRdrName enumFromToName
361 enumFromThen_RDR = nameRdrName enumFromThenName
362 enumFromThenTo_RDR = nameRdrName enumFromThenToName
364 ratioDataCon_RDR = nameRdrName ratioDataConName
365 plusInteger_RDR = nameRdrName plusIntegerName
366 timesInteger_RDR = nameRdrName timesIntegerName
368 ioDataCon_RDR = nameRdrName ioDataConName
370 eqString_RDR = nameRdrName eqStringName
371 unpackCString_RDR = nameRdrName unpackCStringName
372 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
373 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
375 newStablePtr_RDR = nameRdrName newStablePtrName
376 wordDataCon_RDR = dataQual_RDR gHC_WORD FSLIT("W#")
378 bindIO_RDR = nameRdrName bindIOName
379 returnIO_RDR = nameRdrName returnIOName
381 fromInteger_RDR = nameRdrName fromIntegerName
382 fromRational_RDR = nameRdrName fromRationalName
383 minus_RDR = nameRdrName minusName
384 times_RDR = varQual_RDR gHC_NUM FSLIT("*")
385 plus_RDR = varQual_RDR gHC_NUM FSLIT("+")
387 fromString_RDR = nameRdrName fromStringName
389 compose_RDR = varQual_RDR gHC_BASE FSLIT(".")
391 not_RDR = varQual_RDR gHC_BASE FSLIT("not")
392 getTag_RDR = varQual_RDR gHC_BASE FSLIT("getTag")
393 succ_RDR = varQual_RDR gHC_ENUM FSLIT("succ")
394 pred_RDR = varQual_RDR gHC_ENUM FSLIT("pred")
395 minBound_RDR = varQual_RDR gHC_ENUM FSLIT("minBound")
396 maxBound_RDR = varQual_RDR gHC_ENUM FSLIT("maxBound")
397 range_RDR = varQual_RDR gHC_ARR FSLIT("range")
398 inRange_RDR = varQual_RDR gHC_ARR FSLIT("inRange")
399 index_RDR = varQual_RDR gHC_ARR FSLIT("index")
400 unsafeIndex_RDR = varQual_RDR gHC_ARR FSLIT("unsafeIndex")
401 unsafeRangeSize_RDR = varQual_RDR gHC_ARR FSLIT("unsafeRangeSize")
403 readList_RDR = varQual_RDR gHC_READ FSLIT("readList")
404 readListDefault_RDR = varQual_RDR gHC_READ FSLIT("readListDefault")
405 readListPrec_RDR = varQual_RDR gHC_READ FSLIT("readListPrec")
406 readListPrecDefault_RDR = varQual_RDR gHC_READ FSLIT("readListPrecDefault")
407 readPrec_RDR = varQual_RDR gHC_READ FSLIT("readPrec")
408 parens_RDR = varQual_RDR gHC_READ FSLIT("parens")
409 choose_RDR = varQual_RDR gHC_READ FSLIT("choose")
410 lexP_RDR = varQual_RDR gHC_READ FSLIT("lexP")
412 punc_RDR = dataQual_RDR lEX FSLIT("Punc")
413 ident_RDR = dataQual_RDR lEX FSLIT("Ident")
414 symbol_RDR = dataQual_RDR lEX FSLIT("Symbol")
416 step_RDR = varQual_RDR rEAD_PREC FSLIT("step")
417 alt_RDR = varQual_RDR rEAD_PREC FSLIT("+++")
418 reset_RDR = varQual_RDR rEAD_PREC FSLIT("reset")
419 prec_RDR = varQual_RDR rEAD_PREC FSLIT("prec")
421 showList_RDR = varQual_RDR gHC_SHOW FSLIT("showList")
422 showList___RDR = varQual_RDR gHC_SHOW FSLIT("showList__")
423 showsPrec_RDR = varQual_RDR gHC_SHOW FSLIT("showsPrec")
424 showString_RDR = varQual_RDR gHC_SHOW FSLIT("showString")
425 showSpace_RDR = varQual_RDR gHC_SHOW FSLIT("showSpace")
426 showParen_RDR = varQual_RDR gHC_SHOW FSLIT("showParen")
428 typeOf_RDR = varQual_RDR tYPEABLE FSLIT("typeOf")
429 mkTypeRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyConApp")
430 mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon")
432 undefined_RDR = varQual_RDR gHC_ERR FSLIT("undefined")
434 crossDataCon_RDR = dataQual_RDR gHC_BASE FSLIT(":*:")
435 inlDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inl")
436 inrDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inr")
437 genUnitDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Unit")
439 ----------------------
440 varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str)
441 tcQual_RDR mod str = mkOrig mod (mkOccNameFS tcName str)
442 clsQual_RDR mod str = mkOrig mod (mkOccNameFS clsName str)
443 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
446 %************************************************************************
448 \subsection{Known-key names}
450 %************************************************************************
452 Many of these Names are not really "built in", but some parts of the
453 compiler (notably the deriving mechanism) need to mention their names,
454 and it's convenient to write them all down in one place.
456 --MetaHaskell Extension add the constrs and the lower case case
457 -- guys as well (perhaps) e.g. see trueDataConName below
461 runMainIOName = varQual gHC_TOP_HANDLER FSLIT("runMainIO") runMainKey
463 orderingTyConName = tcQual gHC_BASE FSLIT("Ordering") orderingTyConKey
465 eitherTyConName = tcQual dATA_EITHER FSLIT("Either") eitherTyConKey
466 leftDataConName = conName dATA_EITHER FSLIT("Left") leftDataConKey
467 rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey
470 crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey
471 plusTyConName = tcQual gHC_BASE FSLIT(":+:") plusTyConKey
472 genUnitTyConName = tcQual gHC_BASE FSLIT("Unit") genUnitTyConKey
474 -- Base strings Strings
475 unpackCStringName = varQual gHC_BASE FSLIT("unpackCString#") unpackCStringIdKey
476 unpackCStringAppendName = varQual gHC_BASE FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
477 unpackCStringFoldrName = varQual gHC_BASE FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
478 unpackCStringUtf8Name = varQual gHC_BASE FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
479 eqStringName = varQual gHC_BASE FSLIT("eqString") eqStringIdKey
480 stringTyConName = tcQual gHC_BASE FSLIT("String") stringTyConKey
482 -- The 'inline' function
483 inlineIdName = varQual gHC_BASE FSLIT("inline") inlineIdKey
485 -- Base classes (Eq, Ord, Functor)
486 eqClassName = clsQual gHC_BASE FSLIT("Eq") eqClassKey
487 eqName = methName gHC_BASE FSLIT("==") eqClassOpKey
488 ordClassName = clsQual gHC_BASE FSLIT("Ord") ordClassKey
489 geName = methName gHC_BASE FSLIT(">=") geClassOpKey
490 functorClassName = clsQual gHC_BASE FSLIT("Functor") functorClassKey
493 monadClassName = clsQual gHC_BASE FSLIT("Monad") monadClassKey
494 thenMName = methName gHC_BASE FSLIT(">>") thenMClassOpKey
495 bindMName = methName gHC_BASE FSLIT(">>=") bindMClassOpKey
496 returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey
497 failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey
499 -- Random PrelBase functions
500 fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey
501 otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey
502 foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey
503 buildName = varQual gHC_BASE FSLIT("build") buildIdKey
504 augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey
505 appendName = varQual gHC_BASE FSLIT("++") appendIdKey
506 andName = varQual gHC_BASE FSLIT("&&") andIdKey
507 orName = varQual gHC_BASE FSLIT("||") orIdKey
508 assertName = varQual gHC_BASE FSLIT("assert") assertIdKey
509 breakpointName = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
510 breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
511 breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
512 opaqueTyConName = tcQual gHC_BASE FSLIT("Opaque") opaqueTyConKey
517 (mkOccNameFS varName FSLIT("breakpointJump"))
519 breakpointCondJumpName
521 breakpointCondJumpIdKey
522 (mkOccNameFS varName FSLIT("breakpointCondJump"))
524 breakpointAutoJumpName
526 breakpointAutoJumpIdKey
527 (mkOccNameFS varName FSLIT("breakpointAutoJump"))
531 fstName = varQual dATA_TUP FSLIT("fst") fstIdKey
532 sndName = varQual dATA_TUP FSLIT("snd") sndIdKey
535 numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey
536 fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey
537 minusName = methName gHC_NUM FSLIT("-") minusClassOpKey
538 negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey
539 plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey
540 timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey
541 integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey
542 smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey
543 largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey
545 -- PrelReal types and classes
546 rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey
547 ratioTyConName = tcQual gHC_REAL FSLIT("Ratio") ratioTyConKey
548 ratioDataConName = conName gHC_REAL FSLIT(":%") ratioDataConKey
549 realClassName = clsQual gHC_REAL FSLIT("Real") realClassKey
550 integralClassName = clsQual gHC_REAL FSLIT("Integral") integralClassKey
551 realFracClassName = clsQual gHC_REAL FSLIT("RealFrac") realFracClassKey
552 fractionalClassName = clsQual gHC_REAL FSLIT("Fractional") fractionalClassKey
553 fromRationalName = methName gHC_REAL FSLIT("fromRational") fromRationalClassOpKey
556 floatingClassName = clsQual gHC_FLOAT FSLIT("Floating") floatingClassKey
557 realFloatClassName = clsQual gHC_FLOAT FSLIT("RealFloat") realFloatClassKey
560 ixClassName = clsQual gHC_ARR FSLIT("Ix") ixClassKey
563 typeableClassName = clsQual tYPEABLE FSLIT("Typeable") typeableClassKey
564 typeable1ClassName = clsQual tYPEABLE FSLIT("Typeable1") typeable1ClassKey
565 typeable2ClassName = clsQual tYPEABLE FSLIT("Typeable2") typeable2ClassKey
566 typeable3ClassName = clsQual tYPEABLE FSLIT("Typeable3") typeable3ClassKey
567 typeable4ClassName = clsQual tYPEABLE FSLIT("Typeable4") typeable4ClassKey
568 typeable5ClassName = clsQual tYPEABLE FSLIT("Typeable5") typeable5ClassKey
569 typeable6ClassName = clsQual tYPEABLE FSLIT("Typeable6") typeable6ClassKey
570 typeable7ClassName = clsQual tYPEABLE FSLIT("Typeable7") typeable7ClassKey
572 typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
573 , typeable3ClassName, typeable4ClassName, typeable5ClassName
574 , typeable6ClassName, typeable7ClassName ]
577 dataClassName = clsQual gENERICS FSLIT("Data") dataClassKey
580 assertErrorName = varQual gHC_ERR FSLIT("assertError") assertErrorIdKey
582 -- Enum module (Enum, Bounded)
583 enumClassName = clsQual gHC_ENUM FSLIT("Enum") enumClassKey
584 enumFromName = methName gHC_ENUM FSLIT("enumFrom") enumFromClassOpKey
585 enumFromToName = methName gHC_ENUM FSLIT("enumFromTo") enumFromToClassOpKey
586 enumFromThenName = methName gHC_ENUM FSLIT("enumFromThen") enumFromThenClassOpKey
587 enumFromThenToName = methName gHC_ENUM FSLIT("enumFromThenTo") enumFromThenToClassOpKey
588 boundedClassName = clsQual gHC_ENUM FSLIT("Bounded") boundedClassKey
591 concatName = varQual gHC_LIST FSLIT("concat") concatIdKey
592 filterName = varQual gHC_LIST FSLIT("filter") filterIdKey
593 zipName = varQual gHC_LIST FSLIT("zip") zipIdKey
596 showClassName = clsQual gHC_SHOW FSLIT("Show") showClassKey
599 readClassName = clsQual gHC_READ FSLIT("Read") readClassKey
601 -- parallel array types and functions
602 enumFromToPName = varQual gHC_PARR FSLIT("enumFromToP") enumFromToPIdKey
603 enumFromThenToPName= varQual gHC_PARR FSLIT("enumFromThenToP") enumFromThenToPIdKey
604 nullPName = varQual gHC_PARR FSLIT("nullP") nullPIdKey
605 lengthPName = varQual gHC_PARR FSLIT("lengthP") lengthPIdKey
606 replicatePName = varQual gHC_PARR FSLIT("replicateP") replicatePIdKey
607 mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey
608 filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey
609 zipPName = varQual gHC_PARR FSLIT("zipP") zipPIdKey
610 crossMapPName = varQual gHC_PARR FSLIT("crossMapP") crossMapPIdKey
611 indexPName = varQual gHC_PARR FSLIT("!:") indexPIdKey
612 toPName = varQual gHC_PARR FSLIT("toP") toPIdKey
613 bpermutePName = varQual gHC_PARR FSLIT("bpermuteP") bpermutePIdKey
614 bpermuteDftPName = varQual gHC_PARR FSLIT("bpermuteDftP") bpermuteDftPIdKey
615 indexOfPName = varQual gHC_PARR FSLIT("indexOfP") indexOfPIdKey
618 ioTyConName = tcQual gHC_IO_BASE FSLIT("IO") ioTyConKey
619 ioDataConName = conName gHC_IO_BASE FSLIT("IO") ioDataConKey
620 thenIOName = varQual gHC_IO_BASE FSLIT("thenIO") thenIOIdKey
621 bindIOName = varQual gHC_IO_BASE FSLIT("bindIO") bindIOIdKey
622 returnIOName = varQual gHC_IO_BASE FSLIT("returnIO") returnIOIdKey
623 failIOName = varQual gHC_IO_BASE FSLIT("failIO") failIOIdKey
626 printName = varQual sYSTEM_IO FSLIT("print") printIdKey
628 -- Int, Word, and Addr things
629 int8TyConName = tcQual gHC_INT FSLIT("Int8") int8TyConKey
630 int16TyConName = tcQual gHC_INT FSLIT("Int16") int16TyConKey
631 int32TyConName = tcQual gHC_INT FSLIT("Int32") int32TyConKey
632 int64TyConName = tcQual gHC_INT FSLIT("Int64") int64TyConKey
635 word8TyConName = tcQual gHC_WORD FSLIT("Word8") word8TyConKey
636 word16TyConName = tcQual gHC_WORD FSLIT("Word16") word16TyConKey
637 word32TyConName = tcQual gHC_WORD FSLIT("Word32") word32TyConKey
638 word64TyConName = tcQual gHC_WORD FSLIT("Word64") word64TyConKey
639 wordTyConName = tcQual gHC_WORD FSLIT("Word") wordTyConKey
640 wordDataConName = conName gHC_WORD FSLIT("W#") wordDataConKey
643 ptrTyConName = tcQual gHC_PTR FSLIT("Ptr") ptrTyConKey
644 funPtrTyConName = tcQual gHC_PTR FSLIT("FunPtr") funPtrTyConKey
646 -- Foreign objects and weak pointers
647 stablePtrTyConName = tcQual gHC_STABLE FSLIT("StablePtr") stablePtrTyConKey
648 newStablePtrName = varQual gHC_STABLE FSLIT("newStablePtr") newStablePtrIdKey
651 runSTRepName = varQual gHC_ST FSLIT("runSTRep") runSTRepIdKey
653 -- Recursive-do notation
654 monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
655 mfixName = methName mONAD_FIX FSLIT("mfix") mfixIdKey
658 arrAName = varQual aRROW FSLIT("arr") arrAIdKey
659 composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
660 firstAName = varQual aRROW FSLIT("first") firstAIdKey
661 appAName = varQual aRROW FSLIT("app") appAIdKey
662 choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
663 loopAName = varQual aRROW FSLIT("loop") loopAIdKey
665 -- Other classes, needed for type defaulting
666 monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey
667 randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey
668 randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
669 isStringClassName = clsQual dATA_STRING FSLIT("IsString") isStringClassKey
672 objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey
673 -- objectTyConName was "wTcQual", but that's gone now, and
674 -- I can't see why it was wired in anyway...
675 unmarshalObjectName = varQual dOTNET FSLIT("unmarshalObject") unmarshalObjectIdKey
676 marshalObjectName = varQual dOTNET FSLIT("marshalObject") marshalObjectIdKey
677 marshalStringName = varQual dOTNET FSLIT("marshalString") marshalStringIdKey
678 unmarshalStringName = varQual dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
679 checkDotnetResName = varQual dOTNET FSLIT("checkResult") checkDotnetResNameIdKey
682 %************************************************************************
684 \subsection{Local helpers}
686 %************************************************************************
688 All these are original names; hence mkOrig
691 varQual = mk_known_key_name varName
692 tcQual = mk_known_key_name tcName
693 clsQual = mk_known_key_name clsName
695 mk_known_key_name space mod str uniq
696 = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan
698 conName :: Module -> FastString -> Unique -> Name
700 = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan
702 methName :: Module -> FastString -> Unique -> Name
703 methName mod occ uniq
704 = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan
707 %************************************************************************
709 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
711 %************************************************************************
712 --MetaHaskell extension hand allocate keys here
715 boundedClassKey = mkPreludeClassUnique 1
716 enumClassKey = mkPreludeClassUnique 2
717 eqClassKey = mkPreludeClassUnique 3
718 floatingClassKey = mkPreludeClassUnique 5
719 fractionalClassKey = mkPreludeClassUnique 6
720 integralClassKey = mkPreludeClassUnique 7
721 monadClassKey = mkPreludeClassUnique 8
722 dataClassKey = mkPreludeClassUnique 9
723 functorClassKey = mkPreludeClassUnique 10
724 numClassKey = mkPreludeClassUnique 11
725 ordClassKey = mkPreludeClassUnique 12
726 readClassKey = mkPreludeClassUnique 13
727 realClassKey = mkPreludeClassUnique 14
728 realFloatClassKey = mkPreludeClassUnique 15
729 realFracClassKey = mkPreludeClassUnique 16
730 showClassKey = mkPreludeClassUnique 17
731 ixClassKey = mkPreludeClassUnique 18
733 typeableClassKey = mkPreludeClassUnique 20
734 typeable1ClassKey = mkPreludeClassUnique 21
735 typeable2ClassKey = mkPreludeClassUnique 22
736 typeable3ClassKey = mkPreludeClassUnique 23
737 typeable4ClassKey = mkPreludeClassUnique 24
738 typeable5ClassKey = mkPreludeClassUnique 25
739 typeable6ClassKey = mkPreludeClassUnique 26
740 typeable7ClassKey = mkPreludeClassUnique 27
742 monadFixClassKey = mkPreludeClassUnique 28
744 monadPlusClassKey = mkPreludeClassUnique 30
745 randomClassKey = mkPreludeClassUnique 31
746 randomGenClassKey = mkPreludeClassUnique 32
748 isStringClassKey = mkPreludeClassUnique 33
751 %************************************************************************
753 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
755 %************************************************************************
758 addrPrimTyConKey = mkPreludeTyConUnique 1
759 arrayPrimTyConKey = mkPreludeTyConUnique 3
760 boolTyConKey = mkPreludeTyConUnique 4
761 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
762 charPrimTyConKey = mkPreludeTyConUnique 7
763 charTyConKey = mkPreludeTyConUnique 8
764 doublePrimTyConKey = mkPreludeTyConUnique 9
765 doubleTyConKey = mkPreludeTyConUnique 10
766 floatPrimTyConKey = mkPreludeTyConUnique 11
767 floatTyConKey = mkPreludeTyConUnique 12
768 funTyConKey = mkPreludeTyConUnique 13
769 intPrimTyConKey = mkPreludeTyConUnique 14
770 intTyConKey = mkPreludeTyConUnique 15
771 int8TyConKey = mkPreludeTyConUnique 16
772 int16TyConKey = mkPreludeTyConUnique 17
773 int32PrimTyConKey = mkPreludeTyConUnique 18
774 int32TyConKey = mkPreludeTyConUnique 19
775 int64PrimTyConKey = mkPreludeTyConUnique 20
776 int64TyConKey = mkPreludeTyConUnique 21
777 integerTyConKey = mkPreludeTyConUnique 22
778 listTyConKey = mkPreludeTyConUnique 23
779 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
780 weakPrimTyConKey = mkPreludeTyConUnique 27
781 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
782 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
783 orderingTyConKey = mkPreludeTyConUnique 30
784 mVarPrimTyConKey = mkPreludeTyConUnique 31
785 ratioTyConKey = mkPreludeTyConUnique 32
786 rationalTyConKey = mkPreludeTyConUnique 33
787 realWorldTyConKey = mkPreludeTyConUnique 34
788 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
789 stablePtrTyConKey = mkPreludeTyConUnique 36
791 anyPrimTyConKey = mkPreludeTyConUnique 37
792 anyPrimTyCon1Key = mkPreludeTyConUnique 38
794 statePrimTyConKey = mkPreludeTyConUnique 50
795 stableNamePrimTyConKey = mkPreludeTyConUnique 51
796 stableNameTyConKey = mkPreludeTyConUnique 52
797 mutVarPrimTyConKey = mkPreludeTyConUnique 55
798 ioTyConKey = mkPreludeTyConUnique 56
799 wordPrimTyConKey = mkPreludeTyConUnique 58
800 wordTyConKey = mkPreludeTyConUnique 59
801 word8TyConKey = mkPreludeTyConUnique 60
802 word16TyConKey = mkPreludeTyConUnique 61
803 word32PrimTyConKey = mkPreludeTyConUnique 62
804 word32TyConKey = mkPreludeTyConUnique 63
805 word64PrimTyConKey = mkPreludeTyConUnique 64
806 word64TyConKey = mkPreludeTyConUnique 65
807 liftedConKey = mkPreludeTyConUnique 66
808 unliftedConKey = mkPreludeTyConUnique 67
809 anyBoxConKey = mkPreludeTyConUnique 68
810 kindConKey = mkPreludeTyConUnique 69
811 boxityConKey = mkPreludeTyConUnique 70
812 typeConKey = mkPreludeTyConUnique 71
813 threadIdPrimTyConKey = mkPreludeTyConUnique 72
814 bcoPrimTyConKey = mkPreludeTyConUnique 73
815 ptrTyConKey = mkPreludeTyConUnique 74
816 funPtrTyConKey = mkPreludeTyConUnique 75
817 tVarPrimTyConKey = mkPreludeTyConUnique 76
819 -- Generic Type Constructors
820 crossTyConKey = mkPreludeTyConUnique 79
821 plusTyConKey = mkPreludeTyConUnique 80
822 genUnitTyConKey = mkPreludeTyConUnique 81
824 -- Parallel array type constructor
825 parrTyConKey = mkPreludeTyConUnique 82
828 objectTyConKey = mkPreludeTyConUnique 83
830 eitherTyConKey = mkPreludeTyConUnique 84
832 -- Super Kinds constructors
833 tySuperKindTyConKey = mkPreludeTyConUnique 85
834 coSuperKindTyConKey = mkPreludeTyConUnique 86
837 liftedTypeKindTyConKey = mkPreludeTyConUnique 87
838 openTypeKindTyConKey = mkPreludeTyConUnique 88
839 unliftedTypeKindTyConKey = mkPreludeTyConUnique 89
840 ubxTupleKindTyConKey = mkPreludeTyConUnique 90
841 argTypeKindTyConKey = mkPreludeTyConUnique 91
843 -- Coercion constructors
844 symCoercionTyConKey = mkPreludeTyConUnique 93
845 transCoercionTyConKey = mkPreludeTyConUnique 94
846 leftCoercionTyConKey = mkPreludeTyConUnique 95
847 rightCoercionTyConKey = mkPreludeTyConUnique 96
848 instCoercionTyConKey = mkPreludeTyConUnique 97
849 unsafeCoercionTyConKey = mkPreludeTyConUnique 98
851 unknownTyConKey = mkPreludeTyConUnique 99
852 unknown1TyConKey = mkPreludeTyConUnique 130
853 unknown2TyConKey = mkPreludeTyConUnique 131
854 unknown3TyConKey = mkPreludeTyConUnique 132
855 opaqueTyConKey = mkPreludeTyConUnique 133
857 stringTyConKey = mkPreludeTyConUnique 134
859 ---------------- Template Haskell -------------------
860 -- USES TyConUniques 100-129
861 -----------------------------------------------------
863 unitTyConKey = mkTupleTyConUnique Boxed 0
866 %************************************************************************
868 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
870 %************************************************************************
873 charDataConKey = mkPreludeDataConUnique 1
874 consDataConKey = mkPreludeDataConUnique 2
875 doubleDataConKey = mkPreludeDataConUnique 3
876 falseDataConKey = mkPreludeDataConUnique 4
877 floatDataConKey = mkPreludeDataConUnique 5
878 intDataConKey = mkPreludeDataConUnique 6
879 smallIntegerDataConKey = mkPreludeDataConUnique 7
880 largeIntegerDataConKey = mkPreludeDataConUnique 8
881 nilDataConKey = mkPreludeDataConUnique 11
882 ratioDataConKey = mkPreludeDataConUnique 12
883 stableNameDataConKey = mkPreludeDataConUnique 14
884 trueDataConKey = mkPreludeDataConUnique 15
885 wordDataConKey = mkPreludeDataConUnique 16
886 ioDataConKey = mkPreludeDataConUnique 17
888 -- Generic data constructors
889 crossDataConKey = mkPreludeDataConUnique 20
890 inlDataConKey = mkPreludeDataConUnique 21
891 inrDataConKey = mkPreludeDataConUnique 22
892 genUnitDataConKey = mkPreludeDataConUnique 23
894 -- Data constructor for parallel arrays
895 parrDataConKey = mkPreludeDataConUnique 24
897 leftDataConKey = mkPreludeDataConUnique 25
898 rightDataConKey = mkPreludeDataConUnique 26
901 %************************************************************************
903 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
905 %************************************************************************
908 absentErrorIdKey = mkPreludeMiscIdUnique 1
909 augmentIdKey = mkPreludeMiscIdUnique 3
910 appendIdKey = mkPreludeMiscIdUnique 4
911 buildIdKey = mkPreludeMiscIdUnique 5
912 errorIdKey = mkPreludeMiscIdUnique 6
913 foldlIdKey = mkPreludeMiscIdUnique 7
914 foldrIdKey = mkPreludeMiscIdUnique 8
915 recSelErrorIdKey = mkPreludeMiscIdUnique 9
916 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
917 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
918 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
919 integerZeroIdKey = mkPreludeMiscIdUnique 13
920 int2IntegerIdKey = mkPreludeMiscIdUnique 14
921 seqIdKey = mkPreludeMiscIdUnique 15
922 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
923 eqStringIdKey = mkPreludeMiscIdUnique 17
924 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
925 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
926 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
927 parErrorIdKey = mkPreludeMiscIdUnique 21
928 parIdKey = mkPreludeMiscIdUnique 22
929 patErrorIdKey = mkPreludeMiscIdUnique 23
930 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
931 recConErrorIdKey = mkPreludeMiscIdUnique 25
932 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
933 traceIdKey = mkPreludeMiscIdUnique 27
934 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
935 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
936 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
937 unpackCStringIdKey = mkPreludeMiscIdUnique 31
939 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
940 concatIdKey = mkPreludeMiscIdUnique 33
941 filterIdKey = mkPreludeMiscIdUnique 34
942 zipIdKey = mkPreludeMiscIdUnique 35
943 bindIOIdKey = mkPreludeMiscIdUnique 36
944 returnIOIdKey = mkPreludeMiscIdUnique 37
945 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
946 newStablePtrIdKey = mkPreludeMiscIdUnique 39
947 plusIntegerIdKey = mkPreludeMiscIdUnique 41
948 timesIntegerIdKey = mkPreludeMiscIdUnique 42
949 printIdKey = mkPreludeMiscIdUnique 43
950 failIOIdKey = mkPreludeMiscIdUnique 44
951 nullAddrIdKey = mkPreludeMiscIdUnique 46
952 voidArgIdKey = mkPreludeMiscIdUnique 47
953 fstIdKey = mkPreludeMiscIdUnique 49
954 sndIdKey = mkPreludeMiscIdUnique 50
955 otherwiseIdKey = mkPreludeMiscIdUnique 51
956 assertIdKey = mkPreludeMiscIdUnique 53
957 runSTRepIdKey = mkPreludeMiscIdUnique 54
959 rootMainKey = mkPreludeMiscIdUnique 55
960 runMainKey = mkPreludeMiscIdUnique 56
962 andIdKey = mkPreludeMiscIdUnique 57
963 orIdKey = mkPreludeMiscIdUnique 58
964 thenIOIdKey = mkPreludeMiscIdUnique 59
965 lazyIdKey = mkPreludeMiscIdUnique 60
966 assertErrorIdKey = mkPreludeMiscIdUnique 61
968 breakpointIdKey = mkPreludeMiscIdUnique 62
969 breakpointCondIdKey = mkPreludeMiscIdUnique 63
970 breakpointAutoIdKey = mkPreludeMiscIdUnique 64
971 breakpointJumpIdKey = mkPreludeMiscIdUnique 65
972 breakpointCondJumpIdKey = mkPreludeMiscIdUnique 66
973 breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67
975 inlineIdKey = mkPreludeMiscIdUnique 68
977 -- Parallel array functions
978 nullPIdKey = mkPreludeMiscIdUnique 80
979 lengthPIdKey = mkPreludeMiscIdUnique 81
980 replicatePIdKey = mkPreludeMiscIdUnique 82
981 mapPIdKey = mkPreludeMiscIdUnique 83
982 filterPIdKey = mkPreludeMiscIdUnique 84
983 zipPIdKey = mkPreludeMiscIdUnique 85
984 crossMapPIdKey = mkPreludeMiscIdUnique 86
985 indexPIdKey = mkPreludeMiscIdUnique 87
986 toPIdKey = mkPreludeMiscIdUnique 88
987 enumFromToPIdKey = mkPreludeMiscIdUnique 89
988 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
989 bpermutePIdKey = mkPreludeMiscIdUnique 91
990 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
991 indexOfPIdKey = mkPreludeMiscIdUnique 93
994 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
995 marshalObjectIdKey = mkPreludeMiscIdUnique 95
996 marshalStringIdKey = mkPreludeMiscIdUnique 96
997 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
998 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
1002 Certain class operations from Prelude classes. They get their own
1003 uniques so we can look them up easily when we want to conjure them up
1004 during type checking.
1007 -- Just a place holder for unbound variables produced by the renamer:
1008 unboundKey = mkPreludeMiscIdUnique 101
1010 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
1011 minusClassOpKey = mkPreludeMiscIdUnique 103
1012 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
1013 enumFromClassOpKey = mkPreludeMiscIdUnique 105
1014 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
1015 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1016 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1017 eqClassOpKey = mkPreludeMiscIdUnique 109
1018 geClassOpKey = mkPreludeMiscIdUnique 110
1019 negateClassOpKey = mkPreludeMiscIdUnique 111
1020 failMClassOpKey = mkPreludeMiscIdUnique 112
1021 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1022 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1023 returnMClassOpKey = mkPreludeMiscIdUnique 117
1025 -- Recursive do notation
1026 mfixIdKey = mkPreludeMiscIdUnique 118
1029 arrAIdKey = mkPreludeMiscIdUnique 119
1030 composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
1031 firstAIdKey = mkPreludeMiscIdUnique 121
1032 appAIdKey = mkPreludeMiscIdUnique 122
1033 choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
1034 loopAIdKey = mkPreludeMiscIdUnique 124
1036 fromStringClassOpKey = mkPreludeMiscIdUnique 125
1038 ---------------- Template Haskell -------------------
1039 -- USES IdUniques 200-399
1040 -----------------------------------------------------
1044 %************************************************************************
1046 \subsection{Standard groups of types}
1048 %************************************************************************
1061 %************************************************************************
1063 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1065 %************************************************************************
1067 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1068 even though every numeric class has these two as a superclass,
1069 because the list of ambiguous dictionaries hasn't been simplified.
1077 ++ fractionalClassKeys
1079 fractionalClassKeys =
1080 [ fractionalClassKey
1086 -- the strictness analyser needs to know about numeric types
1087 -- (see SaAbsInt.lhs)
1088 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1092 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1093 -- and are: "classes defined in the Prelude or a standard library"
1094 standardClassKeys = derivableClassKeys ++ numericClassKeys
1095 ++ [randomClassKey, randomGenClassKey,
1097 monadClassKey, monadPlusClassKey,
1102 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1107 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1108 boundedClassKey, showClassKey, readClassKey ]