merge upstream
[ghc-hetmet.git] / compiler / prelude / PrelNames.lhs
1 %
2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
3 %
4 \section[PrelNames]{Definitions of prelude modules and names}
5
6
7 Nota Bene: all Names defined in here should come from the base package
8
9  - ModuleNames for prelude modules, 
10         e.g.    pREL_BASE_Name :: ModuleName
11
12  - Modules for prelude modules
13         e.g.    pREL_Base :: Module
14
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
19
20  - Names for Ids, DataCons, TyCons and Classes that the compiler 
21    "knows about" in some way
22         e.g.    intTyConName :: Name
23                 minusName    :: Name
24    One of these Names contains
25         (a) the module and occurrence name of the thing
26         (b) its Unique
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.
32
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
36
37
38 \begin{code}
39 module PrelNames (
40         Unique, Uniquable(..), hasKey,  -- Re-exported for convenience
41
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
48     ) where
49
50 #include "HsVersions.h"
51
52 import Module
53 import OccName
54 import RdrName    ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
55 import Unique     ( Unique, Uniquable(..), hasKey,
56                     mkPreludeMiscIdUnique, mkPreludeDataConUnique,
57                     mkPreludeTyConUnique, mkPreludeClassUnique,
58                     mkTupleTyConUnique
59                   ) 
60 import BasicTypes ( Boxity(..), Arity )
61 import Name       ( Name, mkInternalName, mkExternalName, mkSystemVarName )
62 import SrcLoc
63 import FastString
64 \end{code}
65
66
67 %************************************************************************
68 %*                                                                      *
69 \subsection{Local Names}
70 %*                                                                      *
71 %************************************************************************
72
73 This *local* name is used by the interactive stuff
74
75 \begin{code}
76 itName :: Unique -> Name
77 itName uniq = mkInternalName uniq (mkOccNameFS varName (fsLit "it")) noSrcSpan
78 \end{code}
79
80 \begin{code}
81 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
82 -- during compiler debugging.
83 mkUnboundName :: RdrName -> Name
84 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan
85
86 isUnboundName :: Name -> Bool
87 isUnboundName name = name `hasKey` unboundKey
88 \end{code}
89
90
91 %************************************************************************
92 %*                                                                      *
93 \subsection{Known key Names}
94 %*                                                                      *
95 %************************************************************************
96
97 This section tells what the compiler knows about the association of
98 names with uniques.  These ones are the *non* wired-in ones.  The
99 wired in ones are defined in TysWiredIn etc.
100
101 The names for DPH can come from one of multiple backend packages. At the point where 
102 'basicKnownKeyNames' is used, we don't know which backend it will be.  Hence, we list
103 the names for multiple backends.  That works out fine, although they use the same uniques,
104 as we are guaranteed to only load one backend; hence, only one of the different names
105 sharing a unique will be used.
106
107 \begin{code}
108 basicKnownKeyNames :: [Name]
109 basicKnownKeyNames
110  = genericTyConNames
111  ++ typeableClassNames
112  ++ dphKnownKeyNames dphSeqPackageId ++ dphKnownKeyNames dphParPackageId
113  ++ [   -- Type constructors (synonyms especially)
114         ioTyConName, ioDataConName,
115         runMainIOName,
116         orderingTyConName,
117         rationalTyConName,
118         stringTyConName,
119         ratioDataConName,
120         ratioTyConName,
121         integerTyConName, smallIntegerName,
122
123         --  Classes.  *Must* include:
124         --      classes that are grabbed by key (e.g., eqClassKey)
125         --      classes in "Class.standardClassKeys" (quite a few)
126         eqClassName,                    -- mentioned, derivable
127         ordClassName,                   -- derivable
128         boundedClassName,               -- derivable
129         numClassName,                   -- mentioned, numeric
130         enumClassName,                  -- derivable
131         monadClassName,
132         functorClassName,
133         realClassName,                  -- numeric
134         integralClassName,              -- numeric
135         fractionalClassName,            -- numeric
136         floatingClassName,              -- numeric
137         realFracClassName,              -- numeric
138         realFloatClassName,             -- numeric
139         dataClassName, 
140         isStringClassName,
141         applicativeClassName,
142         foldableClassName,
143         traversableClassName,
144
145         -- Numeric stuff
146         negateName, minusName, geName, eqName,
147
148         -- Conversion functions
149         fromRationalName, fromIntegerName,
150         toIntegerName, toRationalName,
151         fromIntegralName, realToFracName,
152
153         -- String stuff
154         fromStringName,
155         
156         -- Enum stuff
157         enumFromName, enumFromThenName, 
158         enumFromThenToName, enumFromToName,
159
160         -- Monad stuff
161         thenIOName, bindIOName, returnIOName, failIOName,
162         failMName, bindMName, thenMName, returnMName,
163         fmapName,
164
165         -- MonadRec stuff
166         mfixName,
167
168         -- Arrow stuff
169         arrAName, composeAName, firstAName,
170         appAName, choiceAName, loopAName,
171
172         -- Ix stuff
173         ixClassName, 
174
175         -- Show stuff
176         showClassName, 
177
178         -- Read stuff
179         readClassName, 
180
181         -- Stable pointers
182         newStablePtrName,
183
184     -- GHC Extensions
185         groupWithName,
186
187         -- Strings and lists
188         unpackCStringName, unpackCStringAppendName,
189         unpackCStringFoldrName, unpackCStringUtf8Name,
190
191         -- List operations
192         concatName, filterName, mapName,
193         zipName, foldrName, buildName, augmentName, appendName,
194
195         dollarName,         -- The ($) apply function
196
197         -- FFI primitive types that are not wired-in.
198         stablePtrTyConName, ptrTyConName, funPtrTyConName,
199         int8TyConName, int16TyConName, int32TyConName, int64TyConName,
200         wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
201
202         -- Others
203         otherwiseIdName, inlineIdName,
204         plusIntegerName, timesIntegerName,
205         eqStringName, assertName, breakpointName, breakpointCondName,
206         breakpointAutoName,  opaqueTyConName,
207         assertErrorName, runSTRepName,
208         printName, fstName, sndName,
209
210         -- MonadFix
211         monadFixClassName, mfixName,
212
213         -- Other classes
214         randomClassName, randomGenClassName, monadPlusClassName,
215
216         -- Code types
217         hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name,
218         hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name,
219                                          hetmet_guest_char_literal_name,
220         hetmet_PGArrow_name,
221         hetmet_PGArrow_unit_name,
222         hetmet_PGArrow_tensor_name,
223         hetmet_PGArrow_exponent_name,
224         hetmet_pga_id_name,
225         hetmet_pga_comp_name,
226         hetmet_pga_first_name,
227         hetmet_pga_second_name,
228         hetmet_pga_cancell_name,
229         hetmet_pga_cancelr_name,
230         hetmet_pga_uncancell_name,
231         hetmet_pga_uncancelr_name,
232         hetmet_pga_assoc_name,
233         hetmet_pga_unassoc_name,
234         hetmet_pga_copy_name,
235         hetmet_pga_drop_name,
236         hetmet_pga_swap_name,
237         hetmet_pga_applyl_name,
238         hetmet_pga_applyr_name,
239         hetmet_pga_curryl_name,
240         hetmet_pga_curryr_name,
241         hetmet_pga_loopl_name,
242         hetmet_pga_loopr_name,
243
244         -- Annotation type checking
245         toAnnotationWrapperName
246
247         -- The Either type
248         , eitherTyConName, leftDataConName, rightDataConName
249
250         -- dotnet interop
251         , objectTyConName, marshalObjectName, unmarshalObjectName
252         , marshalStringName, unmarshalStringName, checkDotnetResName
253         
254         -- Generics
255         , genClassName, gen1ClassName
256         , datatypeClassName, constructorClassName, selectorClassName
257         
258         -- Monad comprehensions
259         , guardMName
260         , liftMName
261         , groupMName
262         , mzipName
263     ]
264
265 genericTyConNames :: [Name]
266 genericTyConNames = [
267     v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
268     k1TyConName, m1TyConName, sumTyConName, prodTyConName,
269     compTyConName, rTyConName, pTyConName, dTyConName,
270     cTyConName, sTyConName, rec0TyConName, par0TyConName,
271     d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
272     repTyConName, rep1TyConName
273   ]
274
275 -- Know names from the DPH package which vary depending on the selected DPH backend.
276 --
277 dphKnownKeyNames :: PackageId -> [Name]
278 dphKnownKeyNames dphPkg
279   = map ($ dphPkg)
280     [
281         -- Parallel array operations
282           nullPName, lengthPName, replicatePName,       singletonPName, mapPName,
283           filterPName, zipPName, crossMapPName, indexPName,
284           toPName, emptyPName, appPName,
285         enumFromToPName, enumFromThenToPName
286
287     ]
288 \end{code}
289
290
291 %************************************************************************
292 %*                                                                      *
293 \subsection{Module names}
294 %*                                                                      *
295 %************************************************************************
296
297
298 --MetaHaskell Extension Add a new module here
299 \begin{code}
300 pRELUDE :: Module
301 pRELUDE         = mkBaseModule_ pRELUDE_NAME
302
303 gHC_PRIM, gHC_TYPES, gHC_UNIT, gHC_ORDERING, gHC_GENERICS,
304     gHC_MAGIC,
305     gHC_CLASSES, gHC_BASE, gHC_ENUM, gHC_CSTRING,
306     gHC_SHOW, gHC_READ, gHC_NUM, gHC_INTEGER, gHC_INTEGER_TYPE, gHC_LIST,
307     gHC_HETMET_CODETYPES,
308     gHC_HETMET_PRIVATE,
309     gHC_HETMET_GARROW,
310     gHC_TUPLE, dATA_TUPLE, dATA_EITHER, dATA_STRING, dATA_FOLDABLE, dATA_TRAVERSABLE,
311     gHC_CONC, gHC_IO, gHC_IO_Exception,
312     gHC_ST, gHC_ARR, gHC_STABLE, gHC_PTR, gHC_ERR, gHC_REAL,
313     gHC_FLOAT, gHC_TOP_HANDLER, sYSTEM_IO, dYNAMIC, tYPEABLE, gENERICS,
314     dOTNET, rEAD_PREC, lEX, gHC_INT, gHC_WORD, mONAD, mONAD_FIX, mONAD_GROUP, mONAD_ZIP,
315     aRROW, cONTROL_APPLICATIVE, gHC_DESUGAR, rANDOM, gHC_EXTS,
316     cONTROL_EXCEPTION_BASE :: Module
317
318 gHC_PRIM        = mkPrimModule (fsLit "GHC.Prim")   -- Primitive types and values
319 gHC_TYPES       = mkPrimModule (fsLit "GHC.Types")
320 gHC_UNIT        = mkPrimModule (fsLit "GHC.Unit")
321 gHC_ORDERING    = mkPrimModule (fsLit "GHC.Ordering")
322 gHC_GENERICS    = mkPrimModule (fsLit "GHC.Generics")
323 gHC_MAGIC       = mkPrimModule (fsLit "GHC.Magic")
324 gHC_CSTRING     = mkPrimModule (fsLit "GHC.CString")
325
326 gHC_CLASSES     = mkBaseModule (fsLit "GHC.Classes")
327 gHC_BASE        = mkBaseModule (fsLit "GHC.Base")
328 gHC_ENUM        = mkBaseModule (fsLit "GHC.Enum")
329 gHC_SHOW        = mkBaseModule (fsLit "GHC.Show")
330 gHC_READ        = mkBaseModule (fsLit "GHC.Read")
331 gHC_NUM         = mkBaseModule (fsLit "GHC.Num")
332 gHC_INTEGER     = mkIntegerModule (fsLit "GHC.Integer")
333 gHC_INTEGER_TYPE= mkIntegerModule (fsLit "GHC.Integer.Type")
334 gHC_HETMET_CODETYPES = mkBaseModule (fsLit "GHC.HetMet.CodeTypes")
335 gHC_HETMET_PRIVATE   = mkBaseModule (fsLit "GHC.HetMet.Private")
336 gHC_HETMET_GARROW    = mkBaseModule (fsLit "GHC.HetMet.GArrow")
337 gHC_LIST        = mkBaseModule (fsLit "GHC.List")
338 gHC_TUPLE       = mkPrimModule (fsLit "GHC.Tuple")
339 dATA_TUPLE      = mkBaseModule (fsLit "Data.Tuple")
340 dATA_EITHER     = mkBaseModule (fsLit "Data.Either")
341 dATA_STRING     = mkBaseModule (fsLit "Data.String")
342 dATA_FOLDABLE   = mkBaseModule (fsLit "Data.Foldable")
343 dATA_TRAVERSABLE= mkBaseModule (fsLit "Data.Traversable")
344 gHC_CONC        = mkBaseModule (fsLit "GHC.Conc")
345 gHC_IO          = mkBaseModule (fsLit "GHC.IO")
346 gHC_IO_Exception = mkBaseModule (fsLit "GHC.IO.Exception")
347 gHC_ST          = mkBaseModule (fsLit "GHC.ST")
348 gHC_ARR         = mkBaseModule (fsLit "GHC.Arr")
349 gHC_STABLE      = mkBaseModule (fsLit "GHC.Stable")
350 gHC_PTR         = mkBaseModule (fsLit "GHC.Ptr")
351 gHC_ERR         = mkBaseModule (fsLit "GHC.Err")
352 gHC_REAL        = mkBaseModule (fsLit "GHC.Real")
353 gHC_FLOAT       = mkBaseModule (fsLit "GHC.Float")
354 gHC_TOP_HANDLER = mkBaseModule (fsLit "GHC.TopHandler")
355 sYSTEM_IO       = mkBaseModule (fsLit "System.IO")
356 dYNAMIC         = mkBaseModule (fsLit "Data.Dynamic")
357 tYPEABLE        = mkBaseModule (fsLit "Data.Typeable")
358 gENERICS        = mkBaseModule (fsLit "Data.Data")
359 dOTNET          = mkBaseModule (fsLit "GHC.Dotnet")
360 rEAD_PREC       = mkBaseModule (fsLit "Text.ParserCombinators.ReadPrec")
361 lEX             = mkBaseModule (fsLit "Text.Read.Lex")
362 gHC_INT         = mkBaseModule (fsLit "GHC.Int")
363 gHC_WORD        = mkBaseModule (fsLit "GHC.Word")
364 mONAD           = mkBaseModule (fsLit "Control.Monad")
365 mONAD_FIX       = mkBaseModule (fsLit "Control.Monad.Fix")
366 mONAD_GROUP     = mkBaseModule (fsLit "Control.Monad.Group")
367 mONAD_ZIP       = mkBaseModule (fsLit "Control.Monad.Zip")
368 aRROW           = mkBaseModule (fsLit "Control.Arrow")
369 cONTROL_APPLICATIVE = mkBaseModule (fsLit "Control.Applicative")
370 gHC_DESUGAR = mkBaseModule (fsLit "GHC.Desugar")
371 rANDOM          = mkBaseModule (fsLit "System.Random")
372 gHC_EXTS        = mkBaseModule (fsLit "GHC.Exts")
373 cONTROL_EXCEPTION_BASE = mkBaseModule (fsLit "Control.Exception.Base")
374
375 gHC_PARR :: PackageId -> Module
376 gHC_PARR pkg = mkModule pkg (mkModuleNameFS (fsLit "Data.Array.Parallel"))
377
378 gHC_PARR' :: Module
379 gHC_PARR' = mkBaseModule (fsLit "GHC.PArr")
380
381 mAIN, rOOT_MAIN :: Module
382 mAIN            = mkMainModule_ mAIN_NAME
383 rOOT_MAIN       = mkMainModule (fsLit ":Main") -- Root module for initialisation 
384
385         -- The ':xxx' makes a module name that the user can never
386         -- use himself.  The z-encoding for ':' is "ZC", so the z-encoded
387         -- module name still starts with a capital letter, which keeps
388         -- the z-encoded version consistent.
389 iNTERACTIVE :: Module
390 iNTERACTIVE    = mkMainModule (fsLit ":Interactive")
391
392 pRELUDE_NAME, mAIN_NAME :: ModuleName
393 pRELUDE_NAME   = mkModuleNameFS (fsLit "Prelude")
394 mAIN_NAME      = mkModuleNameFS (fsLit "Main")
395
396 mkPrimModule :: FastString -> Module
397 mkPrimModule m = mkModule primPackageId (mkModuleNameFS m)
398
399 mkIntegerModule :: FastString -> Module
400 mkIntegerModule m = mkModule integerPackageId (mkModuleNameFS m)
401
402 mkBaseModule :: FastString -> Module
403 mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
404
405 mkBaseModule_ :: ModuleName -> Module
406 mkBaseModule_ m = mkModule basePackageId m
407
408 mkMainModule :: FastString -> Module
409 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
410
411 mkMainModule_ :: ModuleName -> Module
412 mkMainModule_ m = mkModule mainPackageId m
413 \end{code}
414
415 %************************************************************************
416 %*                                                                      *
417 \subsection{Constructing the names of tuples
418 %*                                                                      *
419 %************************************************************************
420
421 \begin{code}
422 mkTupleModule :: Boxity -> Arity -> Module
423 mkTupleModule Boxed   0 = gHC_UNIT
424 mkTupleModule Boxed   _ = gHC_TUPLE
425 mkTupleModule Unboxed _ = gHC_PRIM
426 \end{code}
427
428
429 %************************************************************************
430 %*                                                                      *
431                         RdrNames
432 %*                                                                      *
433 %************************************************************************
434
435 \begin{code}
436 main_RDR_Unqual    :: RdrName
437 main_RDR_Unqual = mkUnqual varName (fsLit "main")
438         -- We definitely don't want an Orig RdrName, because
439         -- main might, in principle, be imported into module Main
440
441 forall_tv_RDR, dot_tv_RDR :: RdrName
442 forall_tv_RDR = mkUnqual tvName (fsLit "forall")
443 dot_tv_RDR    = mkUnqual tvName (fsLit ".")
444
445 eq_RDR, ge_RDR, ne_RDR, le_RDR, lt_RDR, gt_RDR, compare_RDR,
446     ltTag_RDR, eqTag_RDR, gtTag_RDR :: RdrName
447 eq_RDR                  = nameRdrName eqName
448 ge_RDR                  = nameRdrName geName
449 ne_RDR                  = varQual_RDR  gHC_CLASSES (fsLit "/=")
450 le_RDR                  = varQual_RDR  gHC_CLASSES (fsLit "<=") 
451 lt_RDR                  = varQual_RDR  gHC_CLASSES (fsLit "<") 
452 gt_RDR                  = varQual_RDR  gHC_CLASSES (fsLit ">")  
453 compare_RDR             = varQual_RDR  gHC_CLASSES (fsLit "compare") 
454 ltTag_RDR               = dataQual_RDR gHC_ORDERING (fsLit "LT") 
455 eqTag_RDR               = dataQual_RDR gHC_ORDERING (fsLit "EQ")
456 gtTag_RDR               = dataQual_RDR gHC_ORDERING (fsLit "GT")
457
458 eqClass_RDR, numClass_RDR, ordClass_RDR, enumClass_RDR, monadClass_RDR
459     :: RdrName
460 eqClass_RDR             = nameRdrName eqClassName
461 numClass_RDR            = nameRdrName numClassName
462 ordClass_RDR            = nameRdrName ordClassName
463 enumClass_RDR           = nameRdrName enumClassName
464 monadClass_RDR          = nameRdrName monadClassName
465
466 map_RDR, append_RDR :: RdrName
467 map_RDR                 = varQual_RDR gHC_BASE (fsLit "map")
468 append_RDR              = varQual_RDR gHC_BASE (fsLit "++")
469
470 foldr_RDR, build_RDR, returnM_RDR, bindM_RDR, failM_RDR :: RdrName
471 foldr_RDR               = nameRdrName foldrName
472 build_RDR               = nameRdrName buildName
473 returnM_RDR             = nameRdrName returnMName
474 bindM_RDR               = nameRdrName bindMName
475 failM_RDR               = nameRdrName failMName
476
477 left_RDR, right_RDR :: RdrName
478 left_RDR                = nameRdrName leftDataConName
479 right_RDR               = nameRdrName rightDataConName
480
481 fromEnum_RDR, toEnum_RDR :: RdrName
482 fromEnum_RDR            = varQual_RDR gHC_ENUM (fsLit "fromEnum")
483 toEnum_RDR              = varQual_RDR gHC_ENUM (fsLit "toEnum")
484
485 enumFrom_RDR, enumFromTo_RDR, enumFromThen_RDR, enumFromThenTo_RDR :: RdrName
486 enumFrom_RDR            = nameRdrName enumFromName
487 enumFromTo_RDR          = nameRdrName enumFromToName
488 enumFromThen_RDR        = nameRdrName enumFromThenName
489 enumFromThenTo_RDR      = nameRdrName enumFromThenToName
490
491 ratioDataCon_RDR, plusInteger_RDR, timesInteger_RDR :: RdrName
492 ratioDataCon_RDR        = nameRdrName ratioDataConName
493 plusInteger_RDR         = nameRdrName plusIntegerName
494 timesInteger_RDR        = nameRdrName timesIntegerName
495
496 ioDataCon_RDR :: RdrName
497 ioDataCon_RDR           = nameRdrName ioDataConName
498
499 eqString_RDR, unpackCString_RDR, unpackCStringFoldr_RDR,
500     unpackCStringUtf8_RDR :: RdrName
501 eqString_RDR            = nameRdrName eqStringName
502 unpackCString_RDR       = nameRdrName unpackCStringName
503 unpackCStringFoldr_RDR  = nameRdrName unpackCStringFoldrName
504 unpackCStringUtf8_RDR   = nameRdrName unpackCStringUtf8Name
505
506 newStablePtr_RDR, wordDataCon_RDR :: RdrName
507 newStablePtr_RDR        = nameRdrName newStablePtrName
508 wordDataCon_RDR         = dataQual_RDR gHC_WORD (fsLit "W#")
509
510 bindIO_RDR, returnIO_RDR :: RdrName
511 bindIO_RDR              = nameRdrName bindIOName
512 returnIO_RDR            = nameRdrName returnIOName
513
514 fromInteger_RDR, fromRational_RDR, minus_RDR, times_RDR, plus_RDR :: RdrName
515 fromInteger_RDR         = nameRdrName fromIntegerName
516 fromRational_RDR        = nameRdrName fromRationalName
517 minus_RDR               = nameRdrName minusName
518 times_RDR               = varQual_RDR  gHC_NUM (fsLit "*")
519 plus_RDR                = varQual_RDR gHC_NUM (fsLit "+")
520
521 fromString_RDR :: RdrName
522 fromString_RDR          = nameRdrName fromStringName
523
524 compose_RDR :: RdrName
525 compose_RDR             = varQual_RDR gHC_BASE (fsLit ".")
526
527 not_RDR, getTag_RDR, succ_RDR, pred_RDR, minBound_RDR, maxBound_RDR,
528     and_RDR, range_RDR, inRange_RDR, index_RDR,
529     unsafeIndex_RDR, unsafeRangeSize_RDR :: RdrName
530 and_RDR                 = varQual_RDR gHC_CLASSES (fsLit "&&")
531 not_RDR                 = varQual_RDR gHC_CLASSES (fsLit "not")
532 getTag_RDR              = varQual_RDR gHC_BASE (fsLit "getTag")
533 succ_RDR                = varQual_RDR gHC_ENUM (fsLit "succ")
534 pred_RDR                = varQual_RDR gHC_ENUM (fsLit "pred")
535 minBound_RDR            = varQual_RDR gHC_ENUM (fsLit "minBound")
536 maxBound_RDR            = varQual_RDR gHC_ENUM (fsLit "maxBound")
537 range_RDR               = varQual_RDR gHC_ARR (fsLit "range")
538 inRange_RDR             = varQual_RDR gHC_ARR (fsLit "inRange")
539 index_RDR               = varQual_RDR gHC_ARR (fsLit "index")
540 unsafeIndex_RDR         = varQual_RDR gHC_ARR (fsLit "unsafeIndex")
541 unsafeRangeSize_RDR     = varQual_RDR gHC_ARR (fsLit "unsafeRangeSize")
542
543 readList_RDR, readListDefault_RDR, readListPrec_RDR, readListPrecDefault_RDR,
544     readPrec_RDR, parens_RDR, choose_RDR, lexP_RDR :: RdrName
545 readList_RDR            = varQual_RDR gHC_READ (fsLit "readList")
546 readListDefault_RDR     = varQual_RDR gHC_READ (fsLit "readListDefault")
547 readListPrec_RDR        = varQual_RDR gHC_READ (fsLit "readListPrec")
548 readListPrecDefault_RDR = varQual_RDR gHC_READ (fsLit "readListPrecDefault")
549 readPrec_RDR            = varQual_RDR gHC_READ (fsLit "readPrec")
550 parens_RDR              = varQual_RDR gHC_READ (fsLit "parens")
551 choose_RDR              = varQual_RDR gHC_READ (fsLit "choose")
552 lexP_RDR                = varQual_RDR gHC_READ (fsLit "lexP")
553
554 punc_RDR, ident_RDR, symbol_RDR :: RdrName
555 punc_RDR                = dataQual_RDR lEX (fsLit "Punc")
556 ident_RDR               = dataQual_RDR lEX (fsLit "Ident")
557 symbol_RDR              = dataQual_RDR lEX (fsLit "Symbol")
558
559 step_RDR, alt_RDR, reset_RDR, prec_RDR :: RdrName
560 step_RDR                = varQual_RDR  rEAD_PREC (fsLit "step")
561 alt_RDR                 = varQual_RDR  rEAD_PREC (fsLit "+++") 
562 reset_RDR               = varQual_RDR  rEAD_PREC (fsLit "reset")
563 prec_RDR                = varQual_RDR  rEAD_PREC (fsLit "prec")
564
565 showList_RDR, showList___RDR, showsPrec_RDR, showString_RDR,
566     showSpace_RDR, showParen_RDR :: RdrName
567 showList_RDR            = varQual_RDR gHC_SHOW (fsLit "showList")
568 showList___RDR          = varQual_RDR gHC_SHOW (fsLit "showList__")
569 showsPrec_RDR           = varQual_RDR gHC_SHOW (fsLit "showsPrec") 
570 showString_RDR          = varQual_RDR gHC_SHOW (fsLit "showString")
571 showSpace_RDR           = varQual_RDR gHC_SHOW (fsLit "showSpace") 
572 showParen_RDR           = varQual_RDR gHC_SHOW (fsLit "showParen") 
573
574 typeOf_RDR, mkTypeRep_RDR, mkTyConRep_RDR :: RdrName
575 typeOf_RDR     = varQual_RDR tYPEABLE (fsLit "typeOf")
576 mkTypeRep_RDR  = varQual_RDR tYPEABLE (fsLit "mkTyConApp")
577 mkTyConRep_RDR = varQual_RDR tYPEABLE (fsLit "mkTyCon")
578
579 undefined_RDR :: RdrName
580 undefined_RDR = varQual_RDR gHC_ERR (fsLit "undefined")
581
582 error_RDR :: RdrName
583 error_RDR = varQual_RDR gHC_ERR (fsLit "error")
584
585 -- Old Generics (constructors and functions)
586 crossDataCon_RDR, inlDataCon_RDR, inrDataCon_RDR, genUnitDataCon_RDR :: RdrName
587 crossDataCon_RDR   = dataQual_RDR gHC_GENERICS (fsLit ":*:")
588 inlDataCon_RDR     = dataQual_RDR gHC_GENERICS (fsLit "Inl")
589 inrDataCon_RDR     = dataQual_RDR gHC_GENERICS (fsLit "Inr")
590 genUnitDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "Unit")
591
592 -- Generics (constructors and functions)
593 u1DataCon_RDR, par1DataCon_RDR, rec1DataCon_RDR,
594   k1DataCon_RDR, m1DataCon_RDR, l1DataCon_RDR, r1DataCon_RDR,
595   prodDataCon_RDR, comp1DataCon_RDR, from_RDR, from1_RDR,
596   to_RDR, to1_RDR, datatypeName_RDR, moduleName_RDR, conName_RDR,
597   conFixity_RDR, conIsRecord_RDR,
598   noArityDataCon_RDR, arityDataCon_RDR, selName_RDR,
599   prefixDataCon_RDR, infixDataCon_RDR, leftAssocDataCon_RDR,
600   rightAssocDataCon_RDR, notAssocDataCon_RDR :: RdrName
601
602 u1DataCon_RDR    = dataQual_RDR gHC_GENERICS (fsLit "U1")
603 par1DataCon_RDR  = dataQual_RDR gHC_GENERICS (fsLit "Par1")
604 rec1DataCon_RDR  = dataQual_RDR gHC_GENERICS (fsLit "Rec1")
605 k1DataCon_RDR    = dataQual_RDR gHC_GENERICS (fsLit "K1")
606 m1DataCon_RDR    = dataQual_RDR gHC_GENERICS (fsLit "M1")
607
608 l1DataCon_RDR     = dataQual_RDR gHC_GENERICS (fsLit "L1")
609 r1DataCon_RDR     = dataQual_RDR gHC_GENERICS (fsLit "R1")
610
611 prodDataCon_RDR   = dataQual_RDR gHC_GENERICS (fsLit ":*:")
612 comp1DataCon_RDR  = dataQual_RDR gHC_GENERICS (fsLit "Comp1")
613
614 from_RDR  = varQual_RDR gHC_GENERICS (fsLit "from")
615 from1_RDR = varQual_RDR gHC_GENERICS (fsLit "from1")
616 to_RDR    = varQual_RDR gHC_GENERICS (fsLit "to")
617 to1_RDR   = varQual_RDR gHC_GENERICS (fsLit "to1")
618
619 datatypeName_RDR  = varQual_RDR gHC_GENERICS (fsLit "datatypeName")
620 moduleName_RDR    = varQual_RDR gHC_GENERICS (fsLit "moduleName")
621 selName_RDR       = varQual_RDR gHC_GENERICS (fsLit "selName")
622 conName_RDR       = varQual_RDR gHC_GENERICS (fsLit "conName")
623 conFixity_RDR     = varQual_RDR gHC_GENERICS (fsLit "conFixity")
624 conIsRecord_RDR   = varQual_RDR gHC_GENERICS (fsLit "conIsRecord")
625
626 noArityDataCon_RDR    = dataQual_RDR gHC_GENERICS (fsLit "NoArity")
627 arityDataCon_RDR      = dataQual_RDR gHC_GENERICS (fsLit "Arity")
628 prefixDataCon_RDR     = dataQual_RDR gHC_GENERICS (fsLit "Prefix")
629 infixDataCon_RDR      = dataQual_RDR gHC_GENERICS (fsLit "Infix")
630 leftAssocDataCon_RDR  = dataQual_RDR gHC_GENERICS (fsLit "LeftAssociative")
631 rightAssocDataCon_RDR = dataQual_RDR gHC_GENERICS (fsLit "RightAssociative")
632 notAssocDataCon_RDR   = dataQual_RDR gHC_GENERICS (fsLit "NotAssociative")
633
634
635 fmap_RDR, pure_RDR, ap_RDR, foldable_foldr_RDR, traverse_RDR :: RdrName
636 fmap_RDR                = varQual_RDR gHC_BASE (fsLit "fmap")
637 pure_RDR                = varQual_RDR cONTROL_APPLICATIVE (fsLit "pure")
638 ap_RDR                  = varQual_RDR cONTROL_APPLICATIVE (fsLit "<*>")
639 foldable_foldr_RDR      = varQual_RDR dATA_FOLDABLE       (fsLit "foldr")
640 traverse_RDR            = varQual_RDR dATA_TRAVERSABLE    (fsLit "traverse")
641
642 ----------------------
643 varQual_RDR, tcQual_RDR, clsQual_RDR, dataQual_RDR
644     :: Module -> FastString -> RdrName
645 varQual_RDR  mod str = mkOrig mod (mkOccNameFS varName str)
646 tcQual_RDR   mod str = mkOrig mod (mkOccNameFS tcName str)
647 clsQual_RDR  mod str = mkOrig mod (mkOccNameFS clsName str)
648 dataQual_RDR mod str = mkOrig mod (mkOccNameFS dataName str)
649 \end{code}
650
651 %************************************************************************
652 %*                                                                      *
653 \subsection{Known-key names}
654 %*                                                                      *
655 %************************************************************************
656
657 Many of these Names are not really "built in", but some parts of the
658 compiler (notably the deriving mechanism) need to mention their names,
659 and it's convenient to write them all down in one place.
660
661 --MetaHaskell Extension  add the constrs and the lower case case
662 -- guys as well (perhaps) e.g. see  trueDataConName     below
663
664
665 \begin{code}
666 wildCardName :: Name
667 wildCardName = mkSystemVarName wildCardKey (fsLit "wild")
668
669 runMainIOName :: Name
670 runMainIOName = varQual gHC_TOP_HANDLER (fsLit "runMainIO") runMainKey
671
672 orderingTyConName :: Name
673 orderingTyConName = tcQual   gHC_ORDERING (fsLit "Ordering") orderingTyConKey
674
675 eitherTyConName, leftDataConName, rightDataConName :: Name
676 eitherTyConName   = tcQual  dATA_EITHER (fsLit "Either") eitherTyConKey
677 leftDataConName   = conName dATA_EITHER (fsLit "Left")   leftDataConKey
678 rightDataConName  = conName dATA_EITHER (fsLit "Right")  rightDataConKey
679
680 -- Generics (types)
681 v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
682   k1TyConName, m1TyConName, sumTyConName, prodTyConName,
683   compTyConName, rTyConName, pTyConName, dTyConName, 
684   cTyConName, sTyConName, rec0TyConName, par0TyConName,
685   d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
686   repTyConName, rep1TyConName :: Name
687
688 v1TyConName  = tcQual gHC_GENERICS (fsLit "V1") v1TyConKey
689 u1TyConName  = tcQual gHC_GENERICS (fsLit "U1") u1TyConKey
690 par1TyConName  = tcQual gHC_GENERICS (fsLit "Par1") par1TyConKey
691 rec1TyConName  = tcQual gHC_GENERICS (fsLit "Rec1") rec1TyConKey
692 k1TyConName  = tcQual gHC_GENERICS (fsLit "K1") k1TyConKey
693 m1TyConName  = tcQual gHC_GENERICS (fsLit "M1") m1TyConKey
694
695 sumTyConName    = tcQual gHC_GENERICS (fsLit ":+:") sumTyConKey
696 prodTyConName   = tcQual gHC_GENERICS (fsLit ":*:") prodTyConKey
697 compTyConName   = tcQual gHC_GENERICS (fsLit ":.:") compTyConKey
698
699 rTyConName  = tcQual gHC_GENERICS (fsLit "R") rTyConKey
700 pTyConName  = tcQual gHC_GENERICS (fsLit "P") pTyConKey
701 dTyConName  = tcQual gHC_GENERICS (fsLit "D") dTyConKey
702 cTyConName  = tcQual gHC_GENERICS (fsLit "C") cTyConKey
703 sTyConName  = tcQual gHC_GENERICS (fsLit "S") sTyConKey
704
705 rec0TyConName  = tcQual gHC_GENERICS (fsLit "Rec0") rec0TyConKey
706 par0TyConName  = tcQual gHC_GENERICS (fsLit "Par0") par0TyConKey
707 d1TyConName  = tcQual gHC_GENERICS (fsLit "D1") d1TyConKey
708 c1TyConName  = tcQual gHC_GENERICS (fsLit "C1") c1TyConKey
709 s1TyConName  = tcQual gHC_GENERICS (fsLit "S1") s1TyConKey
710 noSelTyConName = tcQual gHC_GENERICS (fsLit "NoSelector") noSelTyConKey
711
712 repTyConName  = tcQual gHC_GENERICS (fsLit "Rep")  repTyConKey
713 rep1TyConName = tcQual gHC_GENERICS (fsLit "Rep1") rep1TyConKey
714
715 -- Base strings Strings
716 unpackCStringName, unpackCStringAppendName, unpackCStringFoldrName,
717     unpackCStringUtf8Name, eqStringName, stringTyConName :: Name
718 unpackCStringName       = varQual gHC_CSTRING (fsLit "unpackCString#") unpackCStringIdKey
719 unpackCStringAppendName = varQual gHC_CSTRING (fsLit "unpackAppendCString#") unpackCStringAppendIdKey
720 unpackCStringFoldrName  = varQual gHC_CSTRING (fsLit "unpackFoldrCString#") unpackCStringFoldrIdKey
721 unpackCStringUtf8Name   = varQual gHC_CSTRING (fsLit "unpackCStringUtf8#") unpackCStringUtf8IdKey
722 eqStringName            = varQual gHC_BASE (fsLit "eqString")  eqStringIdKey
723 stringTyConName         = tcQual  gHC_BASE (fsLit "String") stringTyConKey
724
725 -- The 'inline' function
726 inlineIdName :: Name
727 inlineIdName            = varQual gHC_MAGIC (fsLit "inline") inlineIdKey
728
729 -- Base classes (Eq, Ord, Functor)
730 fmapName, eqClassName, eqName, ordClassName, geName, functorClassName :: Name
731 eqClassName       = clsQual  gHC_CLASSES (fsLit "Eq")      eqClassKey
732 eqName            = methName gHC_CLASSES (fsLit "==")      eqClassOpKey
733 ordClassName      = clsQual  gHC_CLASSES (fsLit "Ord")     ordClassKey
734 geName            = methName gHC_CLASSES (fsLit ">=")      geClassOpKey
735 functorClassName  = clsQual  gHC_BASE (fsLit "Functor") functorClassKey
736 fmapName          = methName gHC_BASE (fsLit "fmap")    fmapClassOpKey
737
738 -- Class Monad
739 monadClassName, thenMName, bindMName, returnMName, failMName :: Name
740 monadClassName     = clsQual  gHC_BASE (fsLit "Monad")  monadClassKey
741 thenMName          = methName gHC_BASE (fsLit ">>")     thenMClassOpKey
742 bindMName          = methName gHC_BASE (fsLit ">>=")    bindMClassOpKey
743 returnMName        = methName gHC_BASE (fsLit "return") returnMClassOpKey
744 failMName          = methName gHC_BASE (fsLit "fail")   failMClassOpKey
745
746 -- Classes (Applicative, Foldable, Traversable)
747 applicativeClassName, foldableClassName, traversableClassName :: Name
748 applicativeClassName  = clsQual  cONTROL_APPLICATIVE (fsLit "Applicative") applicativeClassKey
749 foldableClassName     = clsQual  dATA_FOLDABLE       (fsLit "Foldable")    foldableClassKey
750 traversableClassName  = clsQual  dATA_TRAVERSABLE    (fsLit "Traversable") traversableClassKey
751
752 -- Functions for GHC extensions
753 groupWithName :: Name
754 groupWithName = varQual gHC_EXTS (fsLit "groupWith") groupWithIdKey
755
756 -- Random PrelBase functions
757 fromStringName, otherwiseIdName, foldrName, buildName, augmentName,
758     mapName, appendName, assertName,
759     breakpointName, breakpointCondName, breakpointAutoName,
760     dollarName, opaqueTyConName :: Name
761 fromStringName = methName dATA_STRING (fsLit "fromString") fromStringClassOpKey
762 otherwiseIdName   = varQual gHC_BASE (fsLit "otherwise")  otherwiseIdKey
763 foldrName         = varQual gHC_BASE (fsLit "foldr")      foldrIdKey
764 buildName         = varQual gHC_BASE (fsLit "build")      buildIdKey
765 augmentName       = varQual gHC_BASE (fsLit "augment")    augmentIdKey
766 mapName           = varQual gHC_BASE (fsLit "map")        mapIdKey
767 appendName        = varQual gHC_BASE (fsLit "++")         appendIdKey
768 dollarName        = varQual gHC_BASE (fsLit "$")          dollarIdKey
769 assertName        = varQual gHC_BASE (fsLit "assert")     assertIdKey
770 breakpointName    = varQual gHC_BASE (fsLit "breakpoint") breakpointIdKey
771 breakpointCondName= varQual gHC_BASE (fsLit "breakpointCond") breakpointCondIdKey
772 breakpointAutoName= varQual gHC_BASE (fsLit "breakpointAuto") breakpointAutoIdKey
773 opaqueTyConName   = tcQual  gHC_BASE (fsLit "Opaque")   opaqueTyConKey
774
775 breakpointJumpName :: Name
776 breakpointJumpName
777     = mkInternalName
778         breakpointJumpIdKey
779         (mkOccNameFS varName (fsLit "breakpointJump"))
780         noSrcSpan
781 breakpointCondJumpName :: Name
782 breakpointCondJumpName
783     = mkInternalName
784         breakpointCondJumpIdKey
785         (mkOccNameFS varName (fsLit "breakpointCondJump"))
786         noSrcSpan
787 breakpointAutoJumpName :: Name
788 breakpointAutoJumpName
789     = mkInternalName
790         breakpointAutoJumpIdKey
791         (mkOccNameFS varName (fsLit "breakpointAutoJump"))
792         noSrcSpan
793
794 -- PrelTup
795 fstName, sndName :: Name
796 fstName           = varQual dATA_TUPLE (fsLit "fst") fstIdKey
797 sndName           = varQual dATA_TUPLE (fsLit "snd") sndIdKey
798
799 -- Module GHC.Num
800 numClassName, fromIntegerName, minusName, negateName, plusIntegerName,
801     timesIntegerName,
802     integerTyConName, smallIntegerName :: Name
803 numClassName      = clsQual  gHC_NUM (fsLit "Num") numClassKey
804 fromIntegerName   = methName gHC_NUM (fsLit "fromInteger") fromIntegerClassOpKey
805 minusName         = methName gHC_NUM (fsLit "-") minusClassOpKey
806 negateName        = methName gHC_NUM (fsLit "negate") negateClassOpKey
807 plusIntegerName   = varQual  gHC_INTEGER (fsLit "plusInteger") plusIntegerIdKey
808 timesIntegerName  = varQual  gHC_INTEGER (fsLit "timesInteger") timesIntegerIdKey
809 integerTyConName  = tcQual   gHC_INTEGER_TYPE (fsLit "Integer") integerTyConKey
810 smallIntegerName = varQual gHC_INTEGER (fsLit "smallInteger") smallIntegerIdKey
811
812 -- GHC.Real types and classes
813 rationalTyConName, ratioTyConName, ratioDataConName, realClassName,
814     integralClassName, realFracClassName, fractionalClassName,
815     fromRationalName, toIntegerName, toRationalName, fromIntegralName,
816     realToFracName :: Name
817 rationalTyConName   = tcQual  gHC_REAL (fsLit "Rational") rationalTyConKey
818 ratioTyConName      = tcQual  gHC_REAL (fsLit "Ratio") ratioTyConKey
819 ratioDataConName    = conName gHC_REAL (fsLit ":%") ratioDataConKey
820 realClassName       = clsQual gHC_REAL (fsLit "Real") realClassKey
821 integralClassName   = clsQual gHC_REAL (fsLit "Integral") integralClassKey
822 realFracClassName   = clsQual gHC_REAL (fsLit "RealFrac") realFracClassKey
823 fractionalClassName = clsQual gHC_REAL (fsLit "Fractional") fractionalClassKey
824 fromRationalName    = methName gHC_REAL (fsLit "fromRational") fromRationalClassOpKey
825 toIntegerName       = methName gHC_REAL (fsLit "toInteger") toIntegerClassOpKey
826 toRationalName      = methName gHC_REAL (fsLit "toRational") toRationalClassOpKey
827 fromIntegralName    = varQual  gHC_REAL (fsLit "fromIntegral") fromIntegralIdKey
828 realToFracName      = varQual  gHC_REAL (fsLit "realToFrac") realToFracIdKey
829
830 -- PrelFloat classes
831 floatingClassName, realFloatClassName :: Name
832 floatingClassName  = clsQual  gHC_FLOAT (fsLit "Floating") floatingClassKey
833 realFloatClassName = clsQual  gHC_FLOAT (fsLit "RealFloat") realFloatClassKey
834
835 -- Class Ix
836 ixClassName :: Name
837 ixClassName = clsQual gHC_ARR (fsLit "Ix") ixClassKey
838
839 -- Class Typeable
840 typeableClassName, typeable1ClassName, typeable2ClassName,
841     typeable3ClassName, typeable4ClassName, typeable5ClassName,
842     typeable6ClassName, typeable7ClassName :: Name
843 typeableClassName  = clsQual tYPEABLE (fsLit "Typeable") typeableClassKey
844 typeable1ClassName = clsQual tYPEABLE (fsLit "Typeable1") typeable1ClassKey
845 typeable2ClassName = clsQual tYPEABLE (fsLit "Typeable2") typeable2ClassKey
846 typeable3ClassName = clsQual tYPEABLE (fsLit "Typeable3") typeable3ClassKey
847 typeable4ClassName = clsQual tYPEABLE (fsLit "Typeable4") typeable4ClassKey
848 typeable5ClassName = clsQual tYPEABLE (fsLit "Typeable5") typeable5ClassKey
849 typeable6ClassName = clsQual tYPEABLE (fsLit "Typeable6") typeable6ClassKey
850 typeable7ClassName = clsQual tYPEABLE (fsLit "Typeable7") typeable7ClassKey
851
852 typeableClassNames :: [Name]
853 typeableClassNames =    [ typeableClassName, typeable1ClassName, typeable2ClassName
854                         , typeable3ClassName, typeable4ClassName, typeable5ClassName
855                         , typeable6ClassName, typeable7ClassName ]
856
857 -- Class Data
858 dataClassName :: Name
859 dataClassName = clsQual gENERICS (fsLit "Data") dataClassKey
860
861 -- Error module
862 assertErrorName    :: Name
863 assertErrorName   = varQual gHC_IO_Exception (fsLit "assertError") assertErrorIdKey
864
865 -- Enum module (Enum, Bounded)
866 enumClassName, enumFromName, enumFromToName, enumFromThenName,
867     enumFromThenToName, boundedClassName :: Name
868 enumClassName      = clsQual gHC_ENUM (fsLit "Enum") enumClassKey
869 enumFromName       = methName gHC_ENUM (fsLit "enumFrom") enumFromClassOpKey
870 enumFromToName     = methName gHC_ENUM (fsLit "enumFromTo") enumFromToClassOpKey
871 enumFromThenName   = methName gHC_ENUM (fsLit "enumFromThen") enumFromThenClassOpKey
872 enumFromThenToName = methName gHC_ENUM (fsLit "enumFromThenTo") enumFromThenToClassOpKey
873 boundedClassName   = clsQual gHC_ENUM (fsLit "Bounded") boundedClassKey
874
875 -- List functions
876 concatName, filterName, zipName :: Name
877 concatName        = varQual gHC_LIST (fsLit "concat") concatIdKey
878 filterName        = varQual gHC_LIST (fsLit "filter") filterIdKey
879 zipName           = varQual gHC_LIST (fsLit "zip") zipIdKey
880
881 -- Class Show
882 showClassName :: Name
883 showClassName     = clsQual gHC_SHOW (fsLit "Show")       showClassKey
884
885 -- Class Read
886 readClassName :: Name
887 readClassName      = clsQual gHC_READ (fsLit "Read") readClassKey
888
889 -- Classes Generic and Generic1, Datatype, Constructor and Selector
890 genClassName, gen1ClassName, datatypeClassName, constructorClassName,
891   selectorClassName :: Name
892 genClassName  = clsQual gHC_GENERICS (fsLit "Generic")  genClassKey
893 gen1ClassName = clsQual gHC_GENERICS (fsLit "Generic1") gen1ClassKey
894
895 datatypeClassName = clsQual gHC_GENERICS (fsLit "Datatype") datatypeClassKey
896 constructorClassName = clsQual gHC_GENERICS (fsLit "Constructor") constructorClassKey
897 selectorClassName = clsQual gHC_GENERICS (fsLit "Selector") selectorClassKey
898
899 -- parallel array types and functions
900 enumFromToPName, enumFromThenToPName, nullPName, lengthPName,
901     singletonPName, replicatePName, mapPName, filterPName,
902     zipPName, crossMapPName, indexPName, toPName,
903     emptyPName, appPName :: PackageId -> Name
904 enumFromToPName     pkg = varQual (gHC_PARR pkg) (fsLit "enumFromToP")     enumFromToPIdKey
905 enumFromThenToPName pkg = varQual (gHC_PARR pkg) (fsLit "enumFromThenToP") enumFromThenToPIdKey
906 nullPName           pkg = varQual (gHC_PARR pkg) (fsLit "nullP")           nullPIdKey
907 lengthPName         pkg = varQual (gHC_PARR pkg) (fsLit "lengthP")         lengthPIdKey
908 singletonPName      pkg = varQual (gHC_PARR pkg) (fsLit "singletonP")      singletonPIdKey
909 replicatePName      pkg = varQual (gHC_PARR pkg) (fsLit "replicateP")      replicatePIdKey
910 mapPName            pkg = varQual (gHC_PARR pkg) (fsLit "mapP")            mapPIdKey
911 filterPName         pkg = varQual (gHC_PARR pkg) (fsLit "filterP")         filterPIdKey
912 zipPName            pkg = varQual (gHC_PARR pkg) (fsLit "zipP")            zipPIdKey
913 crossMapPName       pkg = varQual (gHC_PARR pkg) (fsLit "crossMapP")       crossMapPIdKey
914 indexPName          pkg = varQual (gHC_PARR pkg) (fsLit "!:")              indexPIdKey
915 toPName             pkg = varQual (gHC_PARR pkg) (fsLit "toP")             toPIdKey
916 emptyPName          pkg = varQual (gHC_PARR pkg) (fsLit "emptyP")          emptyPIdKey
917 appPName            pkg = varQual (gHC_PARR pkg) (fsLit "+:+")             appPIdKey
918
919 -- code type things
920 hetmet_brak_name, hetmet_esc_name, hetmet_csp_name, hetmet_flatten_name, hetmet_unflatten_name, hetmet_flattened_id_name :: Name
921 hetmet_guest_integer_literal_name, hetmet_guest_string_literal_name, hetmet_guest_char_literal_name :: Name
922 hetmet_brak_name = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_brak") hetmet_brak_key
923 hetmet_esc_name  = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_esc")  hetmet_esc_key
924 hetmet_csp_name  = varQual gHC_HETMET_CODETYPES (fsLit "hetmet_csp") hetmet_csp_key
925 hetmet_flatten_name  = varQual gHC_HETMET_CODETYPES (fsLit "pga_flatten") hetmet_flatten_key
926 hetmet_unflatten_name  = varQual gHC_HETMET_CODETYPES (fsLit "pga_unflatten") hetmet_unflatten_key
927 hetmet_flattened_id_name  = varQual gHC_HETMET_CODETYPES (fsLit "pga_flattened_id") hetmet_flattened_id_key
928 hetmet_guest_integer_literal_name = varQual gHC_HETMET_CODETYPES (fsLit "guestIntegerLiteral") hetmet_guest_integer_literal_key
929 hetmet_guest_string_literal_name  = varQual gHC_HETMET_CODETYPES (fsLit "guestStringLiteral")  hetmet_guest_string_literal_key
930 hetmet_guest_char_literal_name    = varQual gHC_HETMET_CODETYPES (fsLit "guestCharLiteral")    hetmet_guest_char_literal_key
931
932 hetmet_PGArrow_name :: Name
933 hetmet_PGArrow_name = tcQual gHC_HETMET_PRIVATE (fsLit "PGArrow") hetmet_PGArrow_key
934 hetmet_PGArrow_unit_name :: Name
935 hetmet_PGArrow_unit_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowUnit") hetmet_PGArrow_unit_key
936 hetmet_PGArrow_tensor_name :: Name
937 hetmet_PGArrow_tensor_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowTensor") hetmet_PGArrow_tensor_key
938 hetmet_PGArrow_exponent_name :: Name
939 hetmet_PGArrow_exponent_name = tcQual gHC_HETMET_GARROW (fsLit "GArrowExponent") hetmet_PGArrow_exponent_key
940 hetmet_pga_id_name :: Name
941 hetmet_pga_id_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_id") hetmet_pga_id_key
942 hetmet_pga_comp_name :: Name
943 hetmet_pga_comp_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_comp") hetmet_pga_comp_key
944 hetmet_pga_first_name :: Name
945 hetmet_pga_first_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_first") hetmet_pga_first_key
946 hetmet_pga_second_name :: Name
947 hetmet_pga_second_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_second") hetmet_pga_second_key
948 hetmet_pga_cancell_name :: Name
949 hetmet_pga_cancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancell") hetmet_pga_cancell_key
950 hetmet_pga_cancelr_name :: Name
951 hetmet_pga_cancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_cancelr") hetmet_pga_cancelr_key
952 hetmet_pga_uncancell_name :: Name
953 hetmet_pga_uncancell_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancell") hetmet_pga_uncancell_key
954 hetmet_pga_uncancelr_name :: Name
955 hetmet_pga_uncancelr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_uncancelr") hetmet_pga_uncancelr_key
956 hetmet_pga_assoc_name :: Name
957 hetmet_pga_assoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_assoc") hetmet_pga_assoc_key
958 hetmet_pga_unassoc_name :: Name
959 hetmet_pga_unassoc_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_unassoc") hetmet_pga_unassoc_key
960 hetmet_pga_copy_name :: Name
961 hetmet_pga_copy_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_copy") hetmet_pga_copy_key
962 hetmet_pga_drop_name :: Name
963 hetmet_pga_drop_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_drop") hetmet_pga_drop_key
964 hetmet_pga_swap_name :: Name
965 hetmet_pga_swap_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_swap") hetmet_pga_swap_key
966 hetmet_pga_applyl_name :: Name
967 hetmet_pga_applyl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyl") hetmet_pga_applyl_key
968 hetmet_pga_applyr_name :: Name
969 hetmet_pga_applyr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_applyr") hetmet_pga_applyr_key
970 hetmet_pga_curryl_name :: Name
971 hetmet_pga_curryl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryl") hetmet_pga_curryl_key
972 hetmet_pga_curryr_name :: Name
973 hetmet_pga_curryr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_curryr") hetmet_pga_curryr_key
974 hetmet_pga_loopl_name :: Name
975 hetmet_pga_loopl_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_loopl") hetmet_pga_loopl_key
976 hetmet_pga_loopr_name :: Name
977 hetmet_pga_loopr_name = varQual gHC_HETMET_PRIVATE (fsLit "pga_loopr") hetmet_pga_loopr_key
978
979 -- IO things
980 ioTyConName, ioDataConName, thenIOName, bindIOName, returnIOName,
981     failIOName :: Name
982 ioTyConName       = tcQual  gHC_TYPES (fsLit "IO") ioTyConKey
983 ioDataConName     = conName gHC_TYPES (fsLit "IO") ioDataConKey
984 thenIOName        = varQual gHC_BASE (fsLit "thenIO") thenIOIdKey
985 bindIOName        = varQual gHC_BASE (fsLit "bindIO") bindIOIdKey
986 returnIOName      = varQual gHC_BASE (fsLit "returnIO") returnIOIdKey
987 failIOName        = varQual gHC_IO (fsLit "failIO") failIOIdKey
988
989 -- IO things
990 printName :: Name
991 printName         = varQual sYSTEM_IO (fsLit "print") printIdKey
992
993 -- Int, Word, and Addr things
994 int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
995 int8TyConName     = tcQual gHC_INT  (fsLit "Int8") int8TyConKey
996 int16TyConName    = tcQual gHC_INT  (fsLit "Int16") int16TyConKey
997 int32TyConName    = tcQual gHC_INT  (fsLit "Int32") int32TyConKey
998 int64TyConName    = tcQual gHC_INT  (fsLit "Int64") int64TyConKey
999
1000 -- Word module
1001 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
1002     wordTyConName, wordDataConName :: Name
1003 word8TyConName    = tcQual  gHC_WORD (fsLit "Word8")  word8TyConKey
1004 word16TyConName   = tcQual  gHC_WORD (fsLit "Word16") word16TyConKey
1005 word32TyConName   = tcQual  gHC_WORD (fsLit "Word32") word32TyConKey
1006 word64TyConName   = tcQual  gHC_WORD (fsLit "Word64") word64TyConKey
1007 wordTyConName     = tcQual  gHC_WORD (fsLit "Word")   wordTyConKey
1008 wordDataConName   = conName gHC_WORD (fsLit "W#") wordDataConKey
1009
1010 -- PrelPtr module
1011 ptrTyConName, funPtrTyConName :: Name
1012 ptrTyConName      = tcQual   gHC_PTR (fsLit "Ptr") ptrTyConKey
1013 funPtrTyConName   = tcQual   gHC_PTR (fsLit "FunPtr") funPtrTyConKey
1014
1015 -- Foreign objects and weak pointers
1016 stablePtrTyConName, newStablePtrName :: Name
1017 stablePtrTyConName    = tcQual   gHC_STABLE (fsLit "StablePtr") stablePtrTyConKey
1018 newStablePtrName      = varQual  gHC_STABLE (fsLit "newStablePtr") newStablePtrIdKey
1019
1020 -- PrelST module
1021 runSTRepName :: Name
1022 runSTRepName       = varQual gHC_ST  (fsLit "runSTRep") runSTRepIdKey
1023
1024 -- Recursive-do notation
1025 monadFixClassName, mfixName :: Name
1026 monadFixClassName  = clsQual mONAD_FIX (fsLit "MonadFix") monadFixClassKey
1027 mfixName           = methName mONAD_FIX (fsLit "mfix") mfixIdKey
1028
1029 -- Arrow notation
1030 arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
1031 arrAName           = varQual aRROW (fsLit "arr")          arrAIdKey
1032 composeAName       = varQual gHC_DESUGAR (fsLit ">>>") composeAIdKey
1033 firstAName         = varQual aRROW (fsLit "first") firstAIdKey
1034 appAName           = varQual aRROW (fsLit "app")          appAIdKey
1035 choiceAName        = varQual aRROW (fsLit "|||")          choiceAIdKey
1036 loopAName          = varQual aRROW (fsLit "loop")  loopAIdKey
1037
1038 -- Monad comprehensions
1039 guardMName, liftMName, groupMName, mzipName :: Name
1040 guardMName         = varQual mONAD (fsLit "guard") guardMIdKey
1041 liftMName          = varQual mONAD (fsLit "liftM") liftMIdKey
1042 groupMName         = varQual mONAD_GROUP (fsLit "mgroupWith") groupMIdKey
1043 mzipName           = varQual mONAD_ZIP (fsLit "mzip") mzipIdKey
1044
1045
1046 -- Annotation type checking
1047 toAnnotationWrapperName :: Name
1048 toAnnotationWrapperName = varQual gHC_DESUGAR (fsLit "toAnnotationWrapper") toAnnotationWrapperIdKey
1049
1050 -- Other classes, needed for type defaulting
1051 monadPlusClassName, randomClassName, randomGenClassName,
1052     isStringClassName :: Name
1053 monadPlusClassName  = clsQual mONAD (fsLit "MonadPlus")  monadPlusClassKey
1054 randomClassName     = clsQual rANDOM (fsLit "Random")    randomClassKey
1055 randomGenClassName  = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey
1056 isStringClassName   = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
1057
1058 -- dotnet interop
1059 objectTyConName :: Name
1060 objectTyConName     = tcQual   dOTNET (fsLit "Object") objectTyConKey
1061         -- objectTyConName was "wTcQual", but that's gone now, and
1062         -- I can't see why it was wired in anyway...
1063 unmarshalObjectName, marshalObjectName, marshalStringName,
1064     unmarshalStringName, checkDotnetResName :: Name
1065 unmarshalObjectName = varQual  dOTNET (fsLit "unmarshalObject") unmarshalObjectIdKey
1066 marshalObjectName   = varQual  dOTNET (fsLit "marshalObject") marshalObjectIdKey
1067 marshalStringName   = varQual  dOTNET (fsLit "marshalString") marshalStringIdKey
1068 unmarshalStringName = varQual  dOTNET (fsLit "unmarshalString") unmarshalStringIdKey
1069 checkDotnetResName  = varQual  dOTNET (fsLit "checkResult")     checkDotnetResNameIdKey
1070 \end{code}
1071
1072 %************************************************************************
1073 %*                                                                      *
1074 \subsection{Local helpers}
1075 %*                                                                      *
1076 %************************************************************************
1077
1078 All these are original names; hence mkOrig
1079
1080 \begin{code}
1081 varQual, tcQual, clsQual :: Module -> FastString -> Unique -> Name
1082 varQual  = mk_known_key_name varName
1083 tcQual   = mk_known_key_name tcName
1084 clsQual  = mk_known_key_name clsName
1085
1086 mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
1087 mk_known_key_name space modu str unique 
1088   = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
1089
1090 conName :: Module -> FastString -> Unique -> Name
1091 conName modu occ unique
1092   = mkExternalName unique modu (mkOccNameFS dataName occ) noSrcSpan
1093
1094 methName :: Module -> FastString -> Unique -> Name
1095 methName modu occ unique
1096   = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
1097 \end{code}
1098
1099 %************************************************************************
1100 %*                                                                      *
1101 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
1102 %*                                                                      *
1103 %************************************************************************
1104 --MetaHaskell extension hand allocate keys here
1105
1106 \begin{code}
1107 boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
1108     fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
1109     functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
1110     realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
1111 boundedClassKey         = mkPreludeClassUnique 1 
1112 enumClassKey            = mkPreludeClassUnique 2 
1113 eqClassKey              = mkPreludeClassUnique 3 
1114 floatingClassKey        = mkPreludeClassUnique 5 
1115 fractionalClassKey      = mkPreludeClassUnique 6 
1116 integralClassKey        = mkPreludeClassUnique 7 
1117 monadClassKey           = mkPreludeClassUnique 8 
1118 dataClassKey            = mkPreludeClassUnique 9
1119 functorClassKey         = mkPreludeClassUnique 10
1120 numClassKey             = mkPreludeClassUnique 11
1121 ordClassKey             = mkPreludeClassUnique 12
1122 readClassKey            = mkPreludeClassUnique 13
1123 realClassKey            = mkPreludeClassUnique 14
1124 realFloatClassKey       = mkPreludeClassUnique 15
1125 realFracClassKey        = mkPreludeClassUnique 16
1126 showClassKey            = mkPreludeClassUnique 17
1127 ixClassKey              = mkPreludeClassUnique 18
1128
1129 typeableClassKey, typeable1ClassKey, typeable2ClassKey, typeable3ClassKey,
1130     typeable4ClassKey, typeable5ClassKey, typeable6ClassKey, typeable7ClassKey
1131     :: Unique
1132 typeableClassKey        = mkPreludeClassUnique 20
1133 typeable1ClassKey       = mkPreludeClassUnique 21
1134 typeable2ClassKey       = mkPreludeClassUnique 22
1135 typeable3ClassKey       = mkPreludeClassUnique 23
1136 typeable4ClassKey       = mkPreludeClassUnique 24
1137 typeable5ClassKey       = mkPreludeClassUnique 25
1138 typeable6ClassKey       = mkPreludeClassUnique 26
1139 typeable7ClassKey       = mkPreludeClassUnique 27
1140
1141 monadFixClassKey :: Unique
1142 monadFixClassKey        = mkPreludeClassUnique 28
1143
1144 monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
1145 monadPlusClassKey       = mkPreludeClassUnique 30
1146 randomClassKey          = mkPreludeClassUnique 31
1147 randomGenClassKey       = mkPreludeClassUnique 32
1148
1149 isStringClassKey :: Unique
1150 isStringClassKey        = mkPreludeClassUnique 33
1151
1152 applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
1153 applicativeClassKey     = mkPreludeClassUnique 34
1154 foldableClassKey        = mkPreludeClassUnique 35
1155 traversableClassKey     = mkPreludeClassUnique 36
1156
1157 genClassKey, gen1ClassKey, datatypeClassKey, constructorClassKey,
1158   selectorClassKey :: Unique
1159 genClassKey   = mkPreludeClassUnique 37
1160 gen1ClassKey  = mkPreludeClassUnique 38
1161
1162 datatypeClassKey    = mkPreludeClassUnique 39
1163 constructorClassKey = mkPreludeClassUnique 40
1164 selectorClassKey    = mkPreludeClassUnique 41
1165 \end{code}
1166
1167 %************************************************************************
1168 %*                                                                      *
1169 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
1170 %*                                                                      *
1171 %************************************************************************
1172
1173 \begin{code}
1174 addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey, byteArrayPrimTyConKey,
1175     charPrimTyConKey, charTyConKey, doublePrimTyConKey, doubleTyConKey,
1176     floatPrimTyConKey, floatTyConKey, funTyConKey, intPrimTyConKey,
1177     intTyConKey, int8TyConKey, int16TyConKey, int32PrimTyConKey,
1178     int32TyConKey, int64PrimTyConKey, int64TyConKey, integerTyConKey,
1179     listTyConKey, foreignObjPrimTyConKey, weakPrimTyConKey,
1180     mutableArrayPrimTyConKey, mutableByteArrayPrimTyConKey,
1181     orderingTyConKey, mVarPrimTyConKey, ratioTyConKey, rationalTyConKey,
1182     realWorldTyConKey, stablePtrPrimTyConKey, stablePtrTyConKey,
1183     anyTyConKey :: Unique
1184 addrPrimTyConKey                        = mkPreludeTyConUnique  1
1185 arrayPrimTyConKey                       = mkPreludeTyConUnique  3
1186 boolTyConKey                            = mkPreludeTyConUnique  4
1187 byteArrayPrimTyConKey                   = mkPreludeTyConUnique  5
1188 charPrimTyConKey                        = mkPreludeTyConUnique  7
1189 charTyConKey                            = mkPreludeTyConUnique  8
1190 doublePrimTyConKey                      = mkPreludeTyConUnique  9
1191 doubleTyConKey                          = mkPreludeTyConUnique 10 
1192 floatPrimTyConKey                       = mkPreludeTyConUnique 11
1193 floatTyConKey                           = mkPreludeTyConUnique 12
1194 funTyConKey                             = mkPreludeTyConUnique 13
1195 intPrimTyConKey                         = mkPreludeTyConUnique 14
1196 intTyConKey                             = mkPreludeTyConUnique 15
1197 int8TyConKey                            = mkPreludeTyConUnique 16
1198 int16TyConKey                           = mkPreludeTyConUnique 17
1199 int32PrimTyConKey                       = mkPreludeTyConUnique 18
1200 int32TyConKey                           = mkPreludeTyConUnique 19
1201 int64PrimTyConKey                       = mkPreludeTyConUnique 20
1202 int64TyConKey                           = mkPreludeTyConUnique 21
1203 integerTyConKey                         = mkPreludeTyConUnique 22
1204 listTyConKey                            = mkPreludeTyConUnique 23
1205 foreignObjPrimTyConKey                  = mkPreludeTyConUnique 24
1206 weakPrimTyConKey                        = mkPreludeTyConUnique 27
1207 mutableArrayPrimTyConKey                = mkPreludeTyConUnique 28
1208 mutableByteArrayPrimTyConKey            = mkPreludeTyConUnique 29
1209 orderingTyConKey                        = mkPreludeTyConUnique 30
1210 mVarPrimTyConKey                        = mkPreludeTyConUnique 31
1211 ratioTyConKey                           = mkPreludeTyConUnique 32
1212 rationalTyConKey                        = mkPreludeTyConUnique 33
1213 realWorldTyConKey                       = mkPreludeTyConUnique 34
1214 stablePtrPrimTyConKey                   = mkPreludeTyConUnique 35
1215 stablePtrTyConKey                       = mkPreludeTyConUnique 36
1216 anyTyConKey                             = mkPreludeTyConUnique 37
1217
1218 statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
1219     mutVarPrimTyConKey, ioTyConKey,
1220     wordPrimTyConKey, wordTyConKey, word8TyConKey, word16TyConKey,
1221     word32PrimTyConKey, word32TyConKey, word64PrimTyConKey, word64TyConKey,
1222     liftedConKey, unliftedConKey, anyBoxConKey, kindConKey, boxityConKey,
1223     typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
1224     funPtrTyConKey, tVarPrimTyConKey, eqPredPrimTyConKey :: Unique
1225 statePrimTyConKey                       = mkPreludeTyConUnique 50
1226 stableNamePrimTyConKey                  = mkPreludeTyConUnique 51
1227 stableNameTyConKey                      = mkPreludeTyConUnique 52
1228 eqPredPrimTyConKey                      = mkPreludeTyConUnique 53
1229 mutVarPrimTyConKey                      = mkPreludeTyConUnique 55
1230 ioTyConKey                              = mkPreludeTyConUnique 56
1231 wordPrimTyConKey                        = mkPreludeTyConUnique 58
1232 wordTyConKey                            = mkPreludeTyConUnique 59
1233 word8TyConKey                           = mkPreludeTyConUnique 60
1234 word16TyConKey                          = mkPreludeTyConUnique 61 
1235 word32PrimTyConKey                      = mkPreludeTyConUnique 62 
1236 word32TyConKey                          = mkPreludeTyConUnique 63
1237 word64PrimTyConKey                      = mkPreludeTyConUnique 64
1238 word64TyConKey                          = mkPreludeTyConUnique 65
1239 liftedConKey                            = mkPreludeTyConUnique 66
1240 unliftedConKey                          = mkPreludeTyConUnique 67
1241 anyBoxConKey                            = mkPreludeTyConUnique 68
1242 kindConKey                              = mkPreludeTyConUnique 69
1243 boxityConKey                            = mkPreludeTyConUnique 70
1244 typeConKey                              = mkPreludeTyConUnique 71
1245 threadIdPrimTyConKey                    = mkPreludeTyConUnique 72
1246 bcoPrimTyConKey                         = mkPreludeTyConUnique 73
1247 ptrTyConKey                             = mkPreludeTyConUnique 74
1248 funPtrTyConKey                          = mkPreludeTyConUnique 75
1249 tVarPrimTyConKey                        = mkPreludeTyConUnique 76
1250
1251 -- Parallel array type constructor
1252 parrTyConKey :: Unique
1253 parrTyConKey                            = mkPreludeTyConUnique 82
1254
1255 -- dotnet interop
1256 objectTyConKey :: Unique
1257 objectTyConKey                          = mkPreludeTyConUnique 83
1258
1259 eitherTyConKey :: Unique
1260 eitherTyConKey                          = mkPreludeTyConUnique 84
1261
1262 -- Super Kinds constructors
1263 tySuperKindTyConKey :: Unique
1264 tySuperKindTyConKey                    = mkPreludeTyConUnique 85
1265
1266 -- Kind constructors
1267 liftedTypeKindTyConKey, openTypeKindTyConKey, unliftedTypeKindTyConKey,
1268     ubxTupleKindTyConKey, argTypeKindTyConKey :: Unique
1269 liftedTypeKindTyConKey                  = mkPreludeTyConUnique 87
1270 openTypeKindTyConKey                    = mkPreludeTyConUnique 88
1271 unliftedTypeKindTyConKey                = mkPreludeTyConUnique 89
1272 ubxTupleKindTyConKey                    = mkPreludeTyConUnique 90
1273 argTypeKindTyConKey                     = mkPreludeTyConUnique 91
1274
1275 -- Coercion constructors
1276 symCoercionTyConKey, transCoercionTyConKey, leftCoercionTyConKey,
1277     rightCoercionTyConKey, instCoercionTyConKey, unsafeCoercionTyConKey,
1278     csel1CoercionTyConKey, csel2CoercionTyConKey, cselRCoercionTyConKey
1279     :: Unique
1280 symCoercionTyConKey                     = mkPreludeTyConUnique 93
1281 transCoercionTyConKey                   = mkPreludeTyConUnique 94
1282 leftCoercionTyConKey                    = mkPreludeTyConUnique 95
1283 rightCoercionTyConKey                   = mkPreludeTyConUnique 96
1284 instCoercionTyConKey                    = mkPreludeTyConUnique 97
1285 unsafeCoercionTyConKey                  = mkPreludeTyConUnique 98
1286 csel1CoercionTyConKey                   = mkPreludeTyConUnique 99
1287 csel2CoercionTyConKey                   = mkPreludeTyConUnique 100
1288 cselRCoercionTyConKey                   = mkPreludeTyConUnique 101
1289
1290 unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
1291     opaqueTyConKey :: Unique
1292 unknownTyConKey                         = mkPreludeTyConUnique 129
1293 unknown1TyConKey                        = mkPreludeTyConUnique 130
1294 unknown2TyConKey                        = mkPreludeTyConUnique 131
1295 unknown3TyConKey                        = mkPreludeTyConUnique 132
1296 opaqueTyConKey                          = mkPreludeTyConUnique 133
1297
1298 stringTyConKey :: Unique
1299 stringTyConKey                          = mkPreludeTyConUnique 134
1300
1301 -- Generics (Unique keys)
1302 v1TyConKey, u1TyConKey, par1TyConKey, rec1TyConKey,
1303   k1TyConKey, m1TyConKey, sumTyConKey, prodTyConKey,
1304   compTyConKey, rTyConKey, pTyConKey, dTyConKey,
1305   cTyConKey, sTyConKey, rec0TyConKey, par0TyConKey,
1306   d1TyConKey, c1TyConKey, s1TyConKey, noSelTyConKey,
1307   repTyConKey, rep1TyConKey :: Unique
1308
1309 v1TyConKey    = mkPreludeTyConUnique 135
1310 u1TyConKey    = mkPreludeTyConUnique 136
1311 par1TyConKey  = mkPreludeTyConUnique 137
1312 rec1TyConKey  = mkPreludeTyConUnique 138
1313 k1TyConKey    = mkPreludeTyConUnique 139
1314 m1TyConKey    = mkPreludeTyConUnique 140
1315
1316 sumTyConKey   = mkPreludeTyConUnique 141
1317 prodTyConKey  = mkPreludeTyConUnique 142
1318 compTyConKey  = mkPreludeTyConUnique 143
1319
1320 rTyConKey = mkPreludeTyConUnique 144
1321 pTyConKey = mkPreludeTyConUnique 145
1322 dTyConKey = mkPreludeTyConUnique 146
1323 cTyConKey = mkPreludeTyConUnique 147
1324 sTyConKey = mkPreludeTyConUnique 148
1325
1326 rec0TyConKey  = mkPreludeTyConUnique 149
1327 par0TyConKey  = mkPreludeTyConUnique 150
1328 d1TyConKey    = mkPreludeTyConUnique 151
1329 c1TyConKey    = mkPreludeTyConUnique 152
1330 s1TyConKey    = mkPreludeTyConUnique 153
1331 noSelTyConKey = mkPreludeTyConUnique 154
1332
1333 repTyConKey  = mkPreludeTyConUnique 155
1334 rep1TyConKey = mkPreludeTyConUnique 156
1335
1336 ---------------- Template Haskell -------------------
1337 --      USES TyConUniques 200-299
1338 -----------------------------------------------------
1339
1340 unitTyConKey :: Unique
1341 unitTyConKey = mkTupleTyConUnique Boxed 0
1342 \end{code}
1343
1344 %************************************************************************
1345 %*                                                                      *
1346 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1347 %*                                                                      *
1348 %************************************************************************
1349
1350 \begin{code}
1351 charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
1352     floatDataConKey, intDataConKey, nilDataConKey, ratioDataConKey,
1353     stableNameDataConKey, trueDataConKey, wordDataConKey,
1354     ioDataConKey, integerDataConKey :: Unique
1355 charDataConKey                          = mkPreludeDataConUnique  1
1356 consDataConKey                          = mkPreludeDataConUnique  2
1357 doubleDataConKey                        = mkPreludeDataConUnique  3
1358 falseDataConKey                         = mkPreludeDataConUnique  4
1359 floatDataConKey                         = mkPreludeDataConUnique  5
1360 intDataConKey                           = mkPreludeDataConUnique  6
1361 nilDataConKey                           = mkPreludeDataConUnique 11
1362 ratioDataConKey                         = mkPreludeDataConUnique 12
1363 stableNameDataConKey                    = mkPreludeDataConUnique 14
1364 trueDataConKey                          = mkPreludeDataConUnique 15
1365 wordDataConKey                          = mkPreludeDataConUnique 16
1366 ioDataConKey                            = mkPreludeDataConUnique 17
1367 integerDataConKey                       = mkPreludeDataConUnique 18
1368
1369 -- Generic data constructors
1370 crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
1371 crossDataConKey                         = mkPreludeDataConUnique 20
1372 inlDataConKey                           = mkPreludeDataConUnique 21
1373 inrDataConKey                           = mkPreludeDataConUnique 22
1374 genUnitDataConKey                       = mkPreludeDataConUnique 23
1375
1376 -- Data constructor for parallel arrays
1377 parrDataConKey :: Unique
1378 parrDataConKey                          = mkPreludeDataConUnique 24
1379
1380 leftDataConKey, rightDataConKey :: Unique
1381 leftDataConKey                          = mkPreludeDataConUnique 25
1382 rightDataConKey                         = mkPreludeDataConUnique 26
1383
1384 -- Data constructor for Heterogeneous Metaprogramming code types
1385 hetMetCodeTypeDataConKey :: Unique
1386 hetMetCodeTypeDataConKey                        = mkPreludeDataConUnique 27
1387 \end{code}
1388
1389 %************************************************************************
1390 %*                                                                      *
1391 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1392 %*                                                                      *
1393 %************************************************************************
1394
1395 \begin{code}
1396 absentErrorIdKey, augmentIdKey, appendIdKey, buildIdKey, errorIdKey,
1397     foldlIdKey, foldrIdKey, recSelErrorIdKey, 
1398     integerMinusOneIdKey, integerPlusOneIdKey,
1399     integerPlusTwoIdKey, integerZeroIdKey,
1400     int2IntegerIdKey, seqIdKey, irrefutPatErrorIdKey, eqStringIdKey,
1401     noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
1402     runtimeErrorIdKey, parErrorIdKey, parIdKey, patErrorIdKey,
1403     realWorldPrimIdKey, recConErrorIdKey, recUpdErrorIdKey,
1404     traceIdKey, wildCardKey,
1405     unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
1406     unpackCStringFoldrIdKey, unpackCStringIdKey :: Unique
1407 wildCardKey                   = mkPreludeMiscIdUnique  0  -- See Note [WildCard]
1408 absentErrorIdKey              = mkPreludeMiscIdUnique  1
1409 augmentIdKey                  = mkPreludeMiscIdUnique  3
1410 appendIdKey                   = mkPreludeMiscIdUnique  4
1411 buildIdKey                    = mkPreludeMiscIdUnique  5
1412 errorIdKey                    = mkPreludeMiscIdUnique  6
1413 foldlIdKey                    = mkPreludeMiscIdUnique  7
1414 foldrIdKey                    = mkPreludeMiscIdUnique  8
1415 recSelErrorIdKey              = mkPreludeMiscIdUnique  9
1416 integerMinusOneIdKey          = mkPreludeMiscIdUnique 10
1417 integerPlusOneIdKey           = mkPreludeMiscIdUnique 11
1418 integerPlusTwoIdKey           = mkPreludeMiscIdUnique 12
1419 integerZeroIdKey              = mkPreludeMiscIdUnique 13
1420 int2IntegerIdKey              = mkPreludeMiscIdUnique 14
1421 seqIdKey                      = mkPreludeMiscIdUnique 15
1422 irrefutPatErrorIdKey          = mkPreludeMiscIdUnique 16
1423 eqStringIdKey                 = mkPreludeMiscIdUnique 17
1424 noMethodBindingErrorIdKey     = mkPreludeMiscIdUnique 18
1425 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1426 runtimeErrorIdKey             = mkPreludeMiscIdUnique 20 
1427 parErrorIdKey                 = mkPreludeMiscIdUnique 21
1428 parIdKey                      = mkPreludeMiscIdUnique 22
1429 patErrorIdKey                 = mkPreludeMiscIdUnique 23
1430 realWorldPrimIdKey            = mkPreludeMiscIdUnique 24
1431 recConErrorIdKey              = mkPreludeMiscIdUnique 25
1432 recUpdErrorIdKey              = mkPreludeMiscIdUnique 26
1433 traceIdKey                    = mkPreludeMiscIdUnique 27
1434 unpackCStringUtf8IdKey        = mkPreludeMiscIdUnique 28
1435 unpackCStringAppendIdKey      = mkPreludeMiscIdUnique 29
1436 unpackCStringFoldrIdKey       = mkPreludeMiscIdUnique 30
1437 unpackCStringIdKey            = mkPreludeMiscIdUnique 31
1438
1439 unsafeCoerceIdKey, concatIdKey, filterIdKey, zipIdKey, bindIOIdKey,
1440     returnIOIdKey, deRefStablePtrIdKey, newStablePtrIdKey,
1441     smallIntegerIdKey, plusIntegerIdKey, timesIntegerIdKey,
1442     printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
1443     fstIdKey, sndIdKey, otherwiseIdKey, assertIdKey, runSTRepIdKey :: Unique
1444 unsafeCoerceIdKey             = mkPreludeMiscIdUnique 32
1445 concatIdKey                   = mkPreludeMiscIdUnique 33
1446 filterIdKey                   = mkPreludeMiscIdUnique 34
1447 zipIdKey                      = mkPreludeMiscIdUnique 35
1448 bindIOIdKey                   = mkPreludeMiscIdUnique 36
1449 returnIOIdKey                 = mkPreludeMiscIdUnique 37
1450 deRefStablePtrIdKey           = mkPreludeMiscIdUnique 38
1451 newStablePtrIdKey             = mkPreludeMiscIdUnique 39
1452 smallIntegerIdKey             = mkPreludeMiscIdUnique 40
1453 plusIntegerIdKey              = mkPreludeMiscIdUnique 41
1454 timesIntegerIdKey             = mkPreludeMiscIdUnique 42
1455 printIdKey                    = mkPreludeMiscIdUnique 43
1456 failIOIdKey                   = mkPreludeMiscIdUnique 44
1457 nullAddrIdKey                 = mkPreludeMiscIdUnique 46
1458 voidArgIdKey                  = mkPreludeMiscIdUnique 47
1459 fstIdKey                      = mkPreludeMiscIdUnique 49
1460 sndIdKey                      = mkPreludeMiscIdUnique 50
1461 otherwiseIdKey                = mkPreludeMiscIdUnique 51
1462 assertIdKey                   = mkPreludeMiscIdUnique 53
1463 runSTRepIdKey                 = mkPreludeMiscIdUnique 54
1464
1465 rootMainKey, runMainKey :: Unique
1466 rootMainKey                   = mkPreludeMiscIdUnique 55
1467 runMainKey                    = mkPreludeMiscIdUnique 56
1468
1469 thenIOIdKey, lazyIdKey, assertErrorIdKey :: Unique
1470 thenIOIdKey                   = mkPreludeMiscIdUnique 59
1471 lazyIdKey                     = mkPreludeMiscIdUnique 60
1472 assertErrorIdKey              = mkPreludeMiscIdUnique 61
1473
1474 breakpointIdKey, breakpointCondIdKey, breakpointAutoIdKey,
1475     breakpointJumpIdKey, breakpointCondJumpIdKey,
1476     breakpointAutoJumpIdKey :: Unique
1477 breakpointIdKey               = mkPreludeMiscIdUnique 62
1478 breakpointCondIdKey           = mkPreludeMiscIdUnique 63
1479 breakpointAutoIdKey           = mkPreludeMiscIdUnique 64
1480 breakpointJumpIdKey           = mkPreludeMiscIdUnique 65
1481 breakpointCondJumpIdKey       = mkPreludeMiscIdUnique 66
1482 breakpointAutoJumpIdKey       = mkPreludeMiscIdUnique 67
1483
1484 inlineIdKey :: Unique
1485 inlineIdKey                   = mkPreludeMiscIdUnique 68
1486
1487 mapIdKey, groupWithIdKey, dollarIdKey :: Unique
1488 mapIdKey              = mkPreludeMiscIdUnique 69
1489 groupWithIdKey        = mkPreludeMiscIdUnique 70
1490 dollarIdKey           = mkPreludeMiscIdUnique 71
1491
1492 coercionTokenIdKey :: Unique
1493 coercionTokenIdKey    = mkPreludeMiscIdUnique 72
1494
1495 -- Parallel array functions
1496 singletonPIdKey, nullPIdKey, lengthPIdKey, replicatePIdKey, mapPIdKey,
1497     filterPIdKey, zipPIdKey, crossMapPIdKey, indexPIdKey, toPIdKey,
1498     enumFromToPIdKey, enumFromThenToPIdKey, emptyPIdKey, appPIdKey :: Unique
1499 singletonPIdKey               = mkPreludeMiscIdUnique 79
1500 nullPIdKey                    = mkPreludeMiscIdUnique 80
1501 lengthPIdKey                  = mkPreludeMiscIdUnique 81
1502 replicatePIdKey               = mkPreludeMiscIdUnique 82
1503 mapPIdKey                     = mkPreludeMiscIdUnique 83
1504 filterPIdKey                  = mkPreludeMiscIdUnique 84
1505 zipPIdKey                     = mkPreludeMiscIdUnique 85
1506 crossMapPIdKey                = mkPreludeMiscIdUnique 86
1507 indexPIdKey                   = mkPreludeMiscIdUnique 87
1508 toPIdKey                      = mkPreludeMiscIdUnique 88
1509 enumFromToPIdKey              = mkPreludeMiscIdUnique 89
1510 enumFromThenToPIdKey          = mkPreludeMiscIdUnique 90
1511 emptyPIdKey                   = mkPreludeMiscIdUnique 91
1512 appPIdKey                     = mkPreludeMiscIdUnique 92
1513
1514 -- dotnet interop
1515 unmarshalObjectIdKey, marshalObjectIdKey, marshalStringIdKey,
1516     unmarshalStringIdKey, checkDotnetResNameIdKey :: Unique
1517 unmarshalObjectIdKey          = mkPreludeMiscIdUnique 94
1518 marshalObjectIdKey            = mkPreludeMiscIdUnique 95
1519 marshalStringIdKey            = mkPreludeMiscIdUnique 96
1520 unmarshalStringIdKey          = mkPreludeMiscIdUnique 97
1521 checkDotnetResNameIdKey       = mkPreludeMiscIdUnique 98
1522
1523 \end{code}
1524
1525 Certain class operations from Prelude classes.  They get their own
1526 uniques so we can look them up easily when we want to conjure them up
1527 during type checking.
1528
1529 \begin{code}
1530         -- Just a place holder for  unbound variables  produced by the renamer:
1531 unboundKey :: Unique
1532 unboundKey                    = mkPreludeMiscIdUnique 101 
1533
1534 fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
1535     enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
1536     enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
1537     failMClassOpKey, bindMClassOpKey, thenMClassOpKey, returnMClassOpKey,
1538     fmapClassOpKey
1539     :: Unique
1540 fromIntegerClassOpKey         = mkPreludeMiscIdUnique 102
1541 minusClassOpKey               = mkPreludeMiscIdUnique 103
1542 fromRationalClassOpKey        = mkPreludeMiscIdUnique 104
1543 enumFromClassOpKey            = mkPreludeMiscIdUnique 105
1544 enumFromThenClassOpKey        = mkPreludeMiscIdUnique 106
1545 enumFromToClassOpKey          = mkPreludeMiscIdUnique 107
1546 enumFromThenToClassOpKey      = mkPreludeMiscIdUnique 108
1547 eqClassOpKey                  = mkPreludeMiscIdUnique 109
1548 geClassOpKey                  = mkPreludeMiscIdUnique 110
1549 negateClassOpKey              = mkPreludeMiscIdUnique 111
1550 failMClassOpKey               = mkPreludeMiscIdUnique 112
1551 bindMClassOpKey               = mkPreludeMiscIdUnique 113 -- (>>=)
1552 thenMClassOpKey               = mkPreludeMiscIdUnique 114 -- (>>)
1553 fmapClassOpKey                = mkPreludeMiscIdUnique 115
1554 returnMClassOpKey             = mkPreludeMiscIdUnique 117
1555
1556 -- Recursive do notation
1557 mfixIdKey :: Unique
1558 mfixIdKey       = mkPreludeMiscIdUnique 118
1559
1560 -- Arrow notation
1561 arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
1562     loopAIdKey :: Unique
1563 arrAIdKey       = mkPreludeMiscIdUnique 119
1564 composeAIdKey   = mkPreludeMiscIdUnique 120 -- >>>
1565 firstAIdKey     = mkPreludeMiscIdUnique 121
1566 appAIdKey       = mkPreludeMiscIdUnique 122
1567 choiceAIdKey    = mkPreludeMiscIdUnique 123 --  |||
1568 loopAIdKey      = mkPreludeMiscIdUnique 124
1569
1570 fromStringClassOpKey :: Unique
1571 fromStringClassOpKey          = mkPreludeMiscIdUnique 125
1572
1573 -- Annotation type checking
1574 toAnnotationWrapperIdKey :: Unique
1575 toAnnotationWrapperIdKey      = mkPreludeMiscIdUnique 126
1576
1577 -- Conversion functions
1578 fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
1579 fromIntegralIdKey    = mkPreludeMiscIdUnique 127
1580 realToFracIdKey      = mkPreludeMiscIdUnique 128
1581 toIntegerClassOpKey  = mkPreludeMiscIdUnique 129
1582 toRationalClassOpKey = mkPreludeMiscIdUnique 130
1583
1584 -- Monad comprehensions
1585 guardMIdKey, liftMIdKey, groupMIdKey, mzipIdKey :: Unique
1586 guardMIdKey     = mkPreludeMiscIdUnique 131
1587 liftMIdKey      = mkPreludeMiscIdUnique 132
1588 groupMIdKey     = mkPreludeMiscIdUnique 133
1589 mzipIdKey       = mkPreludeMiscIdUnique 134
1590
1591 -- code types
1592 hetMetCodeTypeTyConKey :: Unique
1593 hetMetCodeTypeTyConKey                  = mkPreludeTyConUnique 135
1594
1595 hetmet_guest_integer_literal_key, hetmet_guest_string_literal_key, hetmet_guest_char_literal_key :: Unique
1596 hetmet_guest_integer_literal_key = mkPreludeMiscIdUnique 134
1597 hetmet_guest_string_literal_key  = mkPreludeMiscIdUnique 135
1598 hetmet_guest_char_literal_key    = mkPreludeMiscIdUnique 136
1599 hetmet_PGArrow_key :: Unique
1600 hetmet_PGArrow_key = mkPreludeMiscIdUnique 137
1601 hetmet_pga_id_key :: Unique
1602 hetmet_pga_id_key = mkPreludeMiscIdUnique 138
1603 hetmet_pga_comp_key :: Unique
1604 hetmet_pga_comp_key = mkPreludeMiscIdUnique 139
1605 hetmet_pga_first_key :: Unique
1606 hetmet_pga_first_key = mkPreludeMiscIdUnique 140
1607 hetmet_pga_second_key :: Unique
1608 hetmet_pga_second_key = mkPreludeMiscIdUnique 141
1609 hetmet_pga_cancell_key :: Unique
1610 hetmet_pga_cancell_key = mkPreludeMiscIdUnique 142
1611 hetmet_pga_cancelr_key :: Unique
1612 hetmet_pga_cancelr_key = mkPreludeMiscIdUnique 143
1613 hetmet_pga_uncancell_key :: Unique
1614 hetmet_pga_uncancell_key = mkPreludeMiscIdUnique 144
1615 hetmet_pga_uncancelr_key :: Unique
1616 hetmet_pga_uncancelr_key = mkPreludeMiscIdUnique 145
1617 hetmet_pga_assoc_key :: Unique
1618 hetmet_pga_assoc_key = mkPreludeMiscIdUnique 146
1619 hetmet_pga_unassoc_key :: Unique
1620 hetmet_pga_unassoc_key = mkPreludeMiscIdUnique 147
1621 hetmet_pga_copy_key :: Unique
1622 hetmet_pga_copy_key = mkPreludeMiscIdUnique 148
1623 hetmet_pga_drop_key :: Unique
1624 hetmet_pga_drop_key = mkPreludeMiscIdUnique 149
1625 hetmet_pga_swap_key :: Unique
1626 hetmet_pga_swap_key = mkPreludeMiscIdUnique 150
1627 hetmet_pga_applyl_key :: Unique
1628 hetmet_pga_applyl_key = mkPreludeMiscIdUnique 151
1629 hetmet_pga_applyr_key :: Unique
1630 hetmet_pga_applyr_key = mkPreludeMiscIdUnique 152
1631 hetmet_pga_curryl_key :: Unique
1632 hetmet_pga_curryl_key = mkPreludeMiscIdUnique 153
1633 hetmet_pga_curryr_key :: Unique
1634 hetmet_pga_curryr_key = mkPreludeMiscIdUnique 154
1635 hetmet_flatten_key = mkPreludeMiscIdUnique 155
1636 hetmet_unflatten_key = mkPreludeMiscIdUnique 156
1637 hetmet_flattened_id_key = mkPreludeMiscIdUnique 157
1638 hetmet_PGArrow_unit_key :: Unique
1639 hetmet_PGArrow_unit_key = mkPreludeMiscIdUnique 158
1640 hetmet_PGArrow_tensor_key :: Unique
1641 hetmet_PGArrow_tensor_key = mkPreludeMiscIdUnique 159
1642 hetmet_PGArrow_exponent_key :: Unique
1643 hetmet_PGArrow_exponent_key = mkPreludeMiscIdUnique 160
1644
1645 hetmet_brak_key, hetmet_esc_key, hetmet_csp_key, hetmet_flatten_key, hetmet_unflatten_key, hetmet_flattened_id_key :: Unique
1646 hetmet_brak_key    = mkPreludeMiscIdUnique 161
1647 hetmet_esc_key     = mkPreludeMiscIdUnique 162
1648 hetmet_csp_key     = mkPreludeMiscIdUnique 163
1649
1650 hetmet_pga_loopl_key :: Unique
1651 hetmet_pga_loopl_key = mkPreludeMiscIdUnique 164
1652 hetmet_pga_loopr_key :: Unique
1653 hetmet_pga_loopr_key = mkPreludeMiscIdUnique 165
1654
1655
1656 ---------------- Template Haskell -------------------
1657 --      USES IdUniques 200-499
1658 -----------------------------------------------------
1659 \end{code}
1660
1661
1662 %************************************************************************
1663 %*                                                                      *
1664 \subsection{Standard groups of types}
1665 %*                                                                      *
1666 %************************************************************************
1667
1668 \begin{code}
1669 numericTyKeys :: [Unique]
1670 numericTyKeys =
1671         [ wordTyConKey
1672         , intTyConKey
1673         , integerTyConKey
1674         , doubleTyConKey
1675         , floatTyConKey
1676         ]
1677
1678 kindKeys :: [Unique] 
1679 kindKeys = [ liftedTypeKindTyConKey
1680            , openTypeKindTyConKey
1681            , unliftedTypeKindTyConKey
1682            , ubxTupleKindTyConKey 
1683            , argTypeKindTyConKey ]
1684 \end{code}
1685
1686
1687 %************************************************************************
1688 %*                                                                      *
1689 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1690 %*                                                                      *
1691 %************************************************************************
1692
1693 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1694 even though every numeric class has these two as a superclass,
1695 because the list of ambiguous dictionaries hasn't been simplified.
1696
1697 \begin{code}
1698 numericClassKeys :: [Unique]
1699 numericClassKeys =
1700         [ numClassKey
1701         , realClassKey
1702         , integralClassKey
1703         ]
1704         ++ fractionalClassKeys
1705
1706 fractionalClassKeys :: [Unique]
1707 fractionalClassKeys = 
1708         [ fractionalClassKey
1709         , floatingClassKey
1710         , realFracClassKey
1711         , realFloatClassKey
1712         ]
1713
1714         -- the strictness analyser needs to know about numeric types
1715         -- (see SaAbsInt.lhs)
1716 needsDataDeclCtxtClassKeys :: [Unique]
1717 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1718         [ readClassKey
1719         ]
1720
1721 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1722 -- and are: "classes defined in the Prelude or a standard library"
1723 standardClassKeys :: [Unique]
1724 standardClassKeys = derivableClassKeys ++ numericClassKeys
1725                   ++ [randomClassKey, randomGenClassKey,
1726                       functorClassKey, 
1727                       monadClassKey, monadPlusClassKey,
1728                       isStringClassKey,
1729                       applicativeClassKey, foldableClassKey, traversableClassKey
1730                      ]
1731 \end{code}
1732
1733 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1734 (@TcDeriv@).
1735
1736 \begin{code}
1737 derivableClassKeys :: [Unique]
1738 derivableClassKeys
1739   = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1740       boundedClassKey, showClassKey, readClassKey ]
1741 \end{code}
1742