aa5de1599d0881ad609b50b852375a15f8c2c29a
[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
242         -- Annotation type checking
243         toAnnotationWrapperName
244
245         -- The Either type
246         , eitherTyConName, leftDataConName, rightDataConName
247
248         -- dotnet interop
249         , objectTyConName, marshalObjectName, unmarshalObjectName
250         , marshalStringName, unmarshalStringName, checkDotnetResName
251         
252         -- Generics
253         , genClassName, gen1ClassName
254         , datatypeClassName, constructorClassName, selectorClassName
255         
256         -- Monad comprehensions
257         , guardMName
258         , liftMName
259         , groupMName
260         , mzipName
261     ]
262
263 genericTyConNames :: [Name]
264 genericTyConNames = [
265     v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
266     k1TyConName, m1TyConName, sumTyConName, prodTyConName,
267     compTyConName, rTyConName, pTyConName, dTyConName,
268     cTyConName, sTyConName, rec0TyConName, par0TyConName,
269     d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
270     repTyConName, rep1TyConName
271   ]
272
273 -- Know names from the DPH package which vary depending on the selected DPH backend.
274 --
275 dphKnownKeyNames :: PackageId -> [Name]
276 dphKnownKeyNames dphPkg
277   = map ($ dphPkg)
278     [
279         -- Parallel array operations
280           nullPName, lengthPName, replicatePName,       singletonPName, mapPName,
281           filterPName, zipPName, crossMapPName, indexPName,
282           toPName, emptyPName, appPName,
283         enumFromToPName, enumFromThenToPName
284
285     ]
286 \end{code}
287
288
289 %************************************************************************
290 %*                                                                      *
291 \subsection{Module names}
292 %*                                                                      *
293 %************************************************************************
294
295
296 --MetaHaskell Extension Add a new module here
297 \begin{code}
298 pRELUDE :: Module
299 pRELUDE         = mkBaseModule_ pRELUDE_NAME
300
301 gHC_PRIM, gHC_TYPES, gHC_UNIT, gHC_ORDERING, gHC_GENERICS,
302     gHC_MAGIC,
303     gHC_CLASSES, gHC_BASE, gHC_ENUM, gHC_CSTRING,
304     gHC_SHOW, gHC_READ, gHC_NUM, gHC_INTEGER, gHC_INTEGER_TYPE, gHC_LIST,
305     gHC_HETMET_CODETYPES,
306     gHC_HETMET_PRIVATE,
307     gHC_HETMET_GARROW,
308     gHC_TUPLE, dATA_TUPLE, dATA_EITHER, dATA_STRING, dATA_FOLDABLE, dATA_TRAVERSABLE,
309     gHC_PACK, gHC_CONC, gHC_IO, gHC_IO_Exception,
310     gHC_ST, gHC_ARR, gHC_STABLE, gHC_ADDR, gHC_PTR, gHC_ERR, gHC_REAL,
311     gHC_FLOAT, gHC_TOP_HANDLER, sYSTEM_IO, dYNAMIC, tYPEABLE, gENERICS,
312     dOTNET, rEAD_PREC, lEX, gHC_INT, gHC_WORD, mONAD, mONAD_FIX, mONAD_GROUP, mONAD_ZIP,
313     aRROW, cONTROL_APPLICATIVE, gHC_DESUGAR, rANDOM, gHC_EXTS,
314     cONTROL_EXCEPTION_BASE :: Module
315
316 gHC_PRIM        = mkPrimModule (fsLit "GHC.Prim")   -- Primitive types and values
317 gHC_TYPES       = mkPrimModule (fsLit "GHC.Types")
318 gHC_UNIT        = mkPrimModule (fsLit "GHC.Unit")
319 gHC_ORDERING    = mkPrimModule (fsLit "GHC.Ordering")
320 gHC_GENERICS    = mkPrimModule (fsLit "GHC.Generics")
321 gHC_MAGIC       = mkPrimModule (fsLit "GHC.Magic")
322 gHC_CSTRING     = mkPrimModule (fsLit "GHC.CString")
323
324 gHC_CLASSES     = mkBaseModule (fsLit "GHC.Classes")
325 gHC_BASE        = mkBaseModule (fsLit "GHC.Base")
326 gHC_ENUM        = mkBaseModule (fsLit "GHC.Enum")
327 gHC_SHOW        = mkBaseModule (fsLit "GHC.Show")
328 gHC_READ        = mkBaseModule (fsLit "GHC.Read")
329 gHC_NUM         = mkBaseModule (fsLit "GHC.Num")
330 gHC_INTEGER     = mkIntegerModule (fsLit "GHC.Integer")
331 gHC_INTEGER_TYPE= mkIntegerModule (fsLit "GHC.Integer.Type")
332 gHC_HETMET_CODETYPES = mkBaseModule (fsLit "GHC.HetMet.CodeTypes")
333 gHC_HETMET_PRIVATE   = mkBaseModule (fsLit "GHC.HetMet.Private")
334 gHC_HETMET_GARROW    = mkBaseModule (fsLit "GHC.HetMet.GArrow")
335 gHC_LIST        = mkBaseModule (fsLit "GHC.List")
336 gHC_TUPLE       = mkPrimModule (fsLit "GHC.Tuple")
337 dATA_TUPLE      = mkBaseModule (fsLit "Data.Tuple")
338 dATA_EITHER     = mkBaseModule (fsLit "Data.Either")
339 dATA_STRING     = mkBaseModule (fsLit "Data.String")
340 dATA_FOLDABLE   = mkBaseModule (fsLit "Data.Foldable")
341 dATA_TRAVERSABLE= mkBaseModule (fsLit "Data.Traversable")
342 gHC_PACK        = mkBaseModule (fsLit "GHC.Pack")
343 gHC_CONC        = mkBaseModule (fsLit "GHC.Conc")
344 gHC_IO          = mkBaseModule (fsLit "GHC.IO")
345 gHC_IO_Exception = mkBaseModule (fsLit "GHC.IO.Exception")
346 gHC_ST          = mkBaseModule (fsLit "GHC.ST")
347 gHC_ARR         = mkBaseModule (fsLit "GHC.Arr")
348 gHC_STABLE      = mkBaseModule (fsLit "GHC.Stable")
349 gHC_ADDR        = mkBaseModule (fsLit "GHC.Addr")
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
975 -- IO things
976 ioTyConName, ioDataConName, thenIOName, bindIOName, returnIOName,
977     failIOName :: Name
978 ioTyConName       = tcQual  gHC_TYPES (fsLit "IO") ioTyConKey
979 ioDataConName     = conName gHC_TYPES (fsLit "IO") ioDataConKey
980 thenIOName        = varQual gHC_BASE (fsLit "thenIO") thenIOIdKey
981 bindIOName        = varQual gHC_BASE (fsLit "bindIO") bindIOIdKey
982 returnIOName      = varQual gHC_BASE (fsLit "returnIO") returnIOIdKey
983 failIOName        = varQual gHC_IO (fsLit "failIO") failIOIdKey
984
985 -- IO things
986 printName :: Name
987 printName         = varQual sYSTEM_IO (fsLit "print") printIdKey
988
989 -- Int, Word, and Addr things
990 int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
991 int8TyConName     = tcQual gHC_INT  (fsLit "Int8") int8TyConKey
992 int16TyConName    = tcQual gHC_INT  (fsLit "Int16") int16TyConKey
993 int32TyConName    = tcQual gHC_INT  (fsLit "Int32") int32TyConKey
994 int64TyConName    = tcQual gHC_INT  (fsLit "Int64") int64TyConKey
995
996 -- Word module
997 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
998     wordTyConName, wordDataConName :: Name
999 word8TyConName    = tcQual  gHC_WORD (fsLit "Word8")  word8TyConKey
1000 word16TyConName   = tcQual  gHC_WORD (fsLit "Word16") word16TyConKey
1001 word32TyConName   = tcQual  gHC_WORD (fsLit "Word32") word32TyConKey
1002 word64TyConName   = tcQual  gHC_WORD (fsLit "Word64") word64TyConKey
1003 wordTyConName     = tcQual  gHC_WORD (fsLit "Word")   wordTyConKey
1004 wordDataConName   = conName gHC_WORD (fsLit "W#") wordDataConKey
1005
1006 -- PrelPtr module
1007 ptrTyConName, funPtrTyConName :: Name
1008 ptrTyConName      = tcQual   gHC_PTR (fsLit "Ptr") ptrTyConKey
1009 funPtrTyConName   = tcQual   gHC_PTR (fsLit "FunPtr") funPtrTyConKey
1010
1011 -- Foreign objects and weak pointers
1012 stablePtrTyConName, newStablePtrName :: Name
1013 stablePtrTyConName    = tcQual   gHC_STABLE (fsLit "StablePtr") stablePtrTyConKey
1014 newStablePtrName      = varQual  gHC_STABLE (fsLit "newStablePtr") newStablePtrIdKey
1015
1016 -- PrelST module
1017 runSTRepName :: Name
1018 runSTRepName       = varQual gHC_ST  (fsLit "runSTRep") runSTRepIdKey
1019
1020 -- Recursive-do notation
1021 monadFixClassName, mfixName :: Name
1022 monadFixClassName  = clsQual mONAD_FIX (fsLit "MonadFix") monadFixClassKey
1023 mfixName           = methName mONAD_FIX (fsLit "mfix") mfixIdKey
1024
1025 -- Arrow notation
1026 arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
1027 arrAName           = varQual aRROW (fsLit "arr")          arrAIdKey
1028 composeAName       = varQual gHC_DESUGAR (fsLit ">>>") composeAIdKey
1029 firstAName         = varQual aRROW (fsLit "first") firstAIdKey
1030 appAName           = varQual aRROW (fsLit "app")          appAIdKey
1031 choiceAName        = varQual aRROW (fsLit "|||")          choiceAIdKey
1032 loopAName          = varQual aRROW (fsLit "loop")  loopAIdKey
1033
1034 -- Monad comprehensions
1035 guardMName, liftMName, groupMName, mzipName :: Name
1036 guardMName         = varQual mONAD (fsLit "guard") guardMIdKey
1037 liftMName          = varQual mONAD (fsLit "liftM") liftMIdKey
1038 groupMName         = varQual mONAD_GROUP (fsLit "mgroupWith") groupMIdKey
1039 mzipName           = varQual mONAD_ZIP (fsLit "mzip") mzipIdKey
1040
1041
1042 -- Annotation type checking
1043 toAnnotationWrapperName :: Name
1044 toAnnotationWrapperName = varQual gHC_DESUGAR (fsLit "toAnnotationWrapper") toAnnotationWrapperIdKey
1045
1046 -- Other classes, needed for type defaulting
1047 monadPlusClassName, randomClassName, randomGenClassName,
1048     isStringClassName :: Name
1049 monadPlusClassName  = clsQual mONAD (fsLit "MonadPlus")  monadPlusClassKey
1050 randomClassName     = clsQual rANDOM (fsLit "Random")    randomClassKey
1051 randomGenClassName  = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey
1052 isStringClassName   = clsQual dATA_STRING (fsLit "IsString") isStringClassKey
1053
1054 -- dotnet interop
1055 objectTyConName :: Name
1056 objectTyConName     = tcQual   dOTNET (fsLit "Object") objectTyConKey
1057         -- objectTyConName was "wTcQual", but that's gone now, and
1058         -- I can't see why it was wired in anyway...
1059 unmarshalObjectName, marshalObjectName, marshalStringName,
1060     unmarshalStringName, checkDotnetResName :: Name
1061 unmarshalObjectName = varQual  dOTNET (fsLit "unmarshalObject") unmarshalObjectIdKey
1062 marshalObjectName   = varQual  dOTNET (fsLit "marshalObject") marshalObjectIdKey
1063 marshalStringName   = varQual  dOTNET (fsLit "marshalString") marshalStringIdKey
1064 unmarshalStringName = varQual  dOTNET (fsLit "unmarshalString") unmarshalStringIdKey
1065 checkDotnetResName  = varQual  dOTNET (fsLit "checkResult")     checkDotnetResNameIdKey
1066 \end{code}
1067
1068 %************************************************************************
1069 %*                                                                      *
1070 \subsection{Local helpers}
1071 %*                                                                      *
1072 %************************************************************************
1073
1074 All these are original names; hence mkOrig
1075
1076 \begin{code}
1077 varQual, tcQual, clsQual :: Module -> FastString -> Unique -> Name
1078 varQual  = mk_known_key_name varName
1079 tcQual   = mk_known_key_name tcName
1080 clsQual  = mk_known_key_name clsName
1081
1082 mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
1083 mk_known_key_name space modu str unique 
1084   = mkExternalName unique modu (mkOccNameFS space str) noSrcSpan
1085
1086 conName :: Module -> FastString -> Unique -> Name
1087 conName modu occ unique
1088   = mkExternalName unique modu (mkOccNameFS dataName occ) noSrcSpan
1089
1090 methName :: Module -> FastString -> Unique -> Name
1091 methName modu occ unique
1092   = mkExternalName unique modu (mkVarOccFS occ) noSrcSpan
1093 \end{code}
1094
1095 %************************************************************************
1096 %*                                                                      *
1097 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
1098 %*                                                                      *
1099 %************************************************************************
1100 --MetaHaskell extension hand allocate keys here
1101
1102 \begin{code}
1103 boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
1104     fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
1105     functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
1106     realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
1107 boundedClassKey         = mkPreludeClassUnique 1 
1108 enumClassKey            = mkPreludeClassUnique 2 
1109 eqClassKey              = mkPreludeClassUnique 3 
1110 floatingClassKey        = mkPreludeClassUnique 5 
1111 fractionalClassKey      = mkPreludeClassUnique 6 
1112 integralClassKey        = mkPreludeClassUnique 7 
1113 monadClassKey           = mkPreludeClassUnique 8 
1114 dataClassKey            = mkPreludeClassUnique 9
1115 functorClassKey         = mkPreludeClassUnique 10
1116 numClassKey             = mkPreludeClassUnique 11
1117 ordClassKey             = mkPreludeClassUnique 12
1118 readClassKey            = mkPreludeClassUnique 13
1119 realClassKey            = mkPreludeClassUnique 14
1120 realFloatClassKey       = mkPreludeClassUnique 15
1121 realFracClassKey        = mkPreludeClassUnique 16
1122 showClassKey            = mkPreludeClassUnique 17
1123 ixClassKey              = mkPreludeClassUnique 18
1124
1125 typeableClassKey, typeable1ClassKey, typeable2ClassKey, typeable3ClassKey,
1126     typeable4ClassKey, typeable5ClassKey, typeable6ClassKey, typeable7ClassKey
1127     :: Unique
1128 typeableClassKey        = mkPreludeClassUnique 20
1129 typeable1ClassKey       = mkPreludeClassUnique 21
1130 typeable2ClassKey       = mkPreludeClassUnique 22
1131 typeable3ClassKey       = mkPreludeClassUnique 23
1132 typeable4ClassKey       = mkPreludeClassUnique 24
1133 typeable5ClassKey       = mkPreludeClassUnique 25
1134 typeable6ClassKey       = mkPreludeClassUnique 26
1135 typeable7ClassKey       = mkPreludeClassUnique 27
1136
1137 monadFixClassKey :: Unique
1138 monadFixClassKey        = mkPreludeClassUnique 28
1139
1140 monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
1141 monadPlusClassKey       = mkPreludeClassUnique 30
1142 randomClassKey          = mkPreludeClassUnique 31
1143 randomGenClassKey       = mkPreludeClassUnique 32
1144
1145 isStringClassKey :: Unique
1146 isStringClassKey        = mkPreludeClassUnique 33
1147
1148 applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
1149 applicativeClassKey     = mkPreludeClassUnique 34
1150 foldableClassKey        = mkPreludeClassUnique 35
1151 traversableClassKey     = mkPreludeClassUnique 36
1152
1153 genClassKey, gen1ClassKey, datatypeClassKey, constructorClassKey,
1154   selectorClassKey :: Unique
1155 genClassKey   = mkPreludeClassUnique 37
1156 gen1ClassKey  = mkPreludeClassUnique 38
1157
1158 datatypeClassKey    = mkPreludeClassUnique 39
1159 constructorClassKey = mkPreludeClassUnique 40
1160 selectorClassKey    = mkPreludeClassUnique 41
1161 \end{code}
1162
1163 %************************************************************************
1164 %*                                                                      *
1165 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
1166 %*                                                                      *
1167 %************************************************************************
1168
1169 \begin{code}
1170 addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey, byteArrayPrimTyConKey,
1171     charPrimTyConKey, charTyConKey, doublePrimTyConKey, doubleTyConKey,
1172     floatPrimTyConKey, floatTyConKey, funTyConKey, intPrimTyConKey,
1173     intTyConKey, int8TyConKey, int16TyConKey, int32PrimTyConKey,
1174     int32TyConKey, int64PrimTyConKey, int64TyConKey, integerTyConKey,
1175     listTyConKey, foreignObjPrimTyConKey, weakPrimTyConKey,
1176     mutableArrayPrimTyConKey, mutableByteArrayPrimTyConKey,
1177     orderingTyConKey, mVarPrimTyConKey, ratioTyConKey, rationalTyConKey,
1178     realWorldTyConKey, stablePtrPrimTyConKey, stablePtrTyConKey,
1179     anyTyConKey :: Unique
1180 addrPrimTyConKey                        = mkPreludeTyConUnique  1
1181 arrayPrimTyConKey                       = mkPreludeTyConUnique  3
1182 boolTyConKey                            = mkPreludeTyConUnique  4
1183 byteArrayPrimTyConKey                   = mkPreludeTyConUnique  5
1184 charPrimTyConKey                        = mkPreludeTyConUnique  7
1185 charTyConKey                            = mkPreludeTyConUnique  8
1186 doublePrimTyConKey                      = mkPreludeTyConUnique  9
1187 doubleTyConKey                          = mkPreludeTyConUnique 10 
1188 floatPrimTyConKey                       = mkPreludeTyConUnique 11
1189 floatTyConKey                           = mkPreludeTyConUnique 12
1190 funTyConKey                             = mkPreludeTyConUnique 13
1191 intPrimTyConKey                         = mkPreludeTyConUnique 14
1192 intTyConKey                             = mkPreludeTyConUnique 15
1193 int8TyConKey                            = mkPreludeTyConUnique 16
1194 int16TyConKey                           = mkPreludeTyConUnique 17
1195 int32PrimTyConKey                       = mkPreludeTyConUnique 18
1196 int32TyConKey                           = mkPreludeTyConUnique 19
1197 int64PrimTyConKey                       = mkPreludeTyConUnique 20
1198 int64TyConKey                           = mkPreludeTyConUnique 21
1199 integerTyConKey                         = mkPreludeTyConUnique 22
1200 listTyConKey                            = mkPreludeTyConUnique 23
1201 foreignObjPrimTyConKey                  = mkPreludeTyConUnique 24
1202 weakPrimTyConKey                        = mkPreludeTyConUnique 27
1203 mutableArrayPrimTyConKey                = mkPreludeTyConUnique 28
1204 mutableByteArrayPrimTyConKey            = mkPreludeTyConUnique 29
1205 orderingTyConKey                        = mkPreludeTyConUnique 30
1206 mVarPrimTyConKey                        = mkPreludeTyConUnique 31
1207 ratioTyConKey                           = mkPreludeTyConUnique 32
1208 rationalTyConKey                        = mkPreludeTyConUnique 33
1209 realWorldTyConKey                       = mkPreludeTyConUnique 34
1210 stablePtrPrimTyConKey                   = mkPreludeTyConUnique 35
1211 stablePtrTyConKey                       = mkPreludeTyConUnique 36
1212 anyTyConKey                             = mkPreludeTyConUnique 37
1213
1214 statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
1215     mutVarPrimTyConKey, ioTyConKey,
1216     wordPrimTyConKey, wordTyConKey, word8TyConKey, word16TyConKey,
1217     word32PrimTyConKey, word32TyConKey, word64PrimTyConKey, word64TyConKey,
1218     liftedConKey, unliftedConKey, anyBoxConKey, kindConKey, boxityConKey,
1219     typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
1220     funPtrTyConKey, tVarPrimTyConKey, eqPredPrimTyConKey :: Unique
1221 statePrimTyConKey                       = mkPreludeTyConUnique 50
1222 stableNamePrimTyConKey                  = mkPreludeTyConUnique 51
1223 stableNameTyConKey                      = mkPreludeTyConUnique 52
1224 eqPredPrimTyConKey                      = mkPreludeTyConUnique 53
1225 mutVarPrimTyConKey                      = mkPreludeTyConUnique 55
1226 ioTyConKey                              = mkPreludeTyConUnique 56
1227 wordPrimTyConKey                        = mkPreludeTyConUnique 58
1228 wordTyConKey                            = mkPreludeTyConUnique 59
1229 word8TyConKey                           = mkPreludeTyConUnique 60
1230 word16TyConKey                          = mkPreludeTyConUnique 61 
1231 word32PrimTyConKey                      = mkPreludeTyConUnique 62 
1232 word32TyConKey                          = mkPreludeTyConUnique 63
1233 word64PrimTyConKey                      = mkPreludeTyConUnique 64
1234 word64TyConKey                          = mkPreludeTyConUnique 65
1235 liftedConKey                            = mkPreludeTyConUnique 66
1236 unliftedConKey                          = mkPreludeTyConUnique 67
1237 anyBoxConKey                            = mkPreludeTyConUnique 68
1238 kindConKey                              = mkPreludeTyConUnique 69
1239 boxityConKey                            = mkPreludeTyConUnique 70
1240 typeConKey                              = mkPreludeTyConUnique 71
1241 threadIdPrimTyConKey                    = mkPreludeTyConUnique 72
1242 bcoPrimTyConKey                         = mkPreludeTyConUnique 73
1243 ptrTyConKey                             = mkPreludeTyConUnique 74
1244 funPtrTyConKey                          = mkPreludeTyConUnique 75
1245 tVarPrimTyConKey                        = mkPreludeTyConUnique 76
1246
1247 -- Parallel array type constructor
1248 parrTyConKey :: Unique
1249 parrTyConKey                            = mkPreludeTyConUnique 82
1250
1251 -- dotnet interop
1252 objectTyConKey :: Unique
1253 objectTyConKey                          = mkPreludeTyConUnique 83
1254
1255 eitherTyConKey :: Unique
1256 eitherTyConKey                          = mkPreludeTyConUnique 84
1257
1258 -- Super Kinds constructors
1259 tySuperKindTyConKey :: Unique
1260 tySuperKindTyConKey                    = mkPreludeTyConUnique 85
1261
1262 -- Kind constructors
1263 liftedTypeKindTyConKey, openTypeKindTyConKey, unliftedTypeKindTyConKey,
1264     ubxTupleKindTyConKey, argTypeKindTyConKey :: Unique
1265 liftedTypeKindTyConKey                  = mkPreludeTyConUnique 87
1266 openTypeKindTyConKey                    = mkPreludeTyConUnique 88
1267 unliftedTypeKindTyConKey                = mkPreludeTyConUnique 89
1268 ubxTupleKindTyConKey                    = mkPreludeTyConUnique 90
1269 argTypeKindTyConKey                     = mkPreludeTyConUnique 91
1270
1271 -- Coercion constructors
1272 symCoercionTyConKey, transCoercionTyConKey, leftCoercionTyConKey,
1273     rightCoercionTyConKey, instCoercionTyConKey, unsafeCoercionTyConKey,
1274     csel1CoercionTyConKey, csel2CoercionTyConKey, cselRCoercionTyConKey
1275     :: Unique
1276 symCoercionTyConKey                     = mkPreludeTyConUnique 93
1277 transCoercionTyConKey                   = mkPreludeTyConUnique 94
1278 leftCoercionTyConKey                    = mkPreludeTyConUnique 95
1279 rightCoercionTyConKey                   = mkPreludeTyConUnique 96
1280 instCoercionTyConKey                    = mkPreludeTyConUnique 97
1281 unsafeCoercionTyConKey                  = mkPreludeTyConUnique 98
1282 csel1CoercionTyConKey                   = mkPreludeTyConUnique 99
1283 csel2CoercionTyConKey                   = mkPreludeTyConUnique 100
1284 cselRCoercionTyConKey                   = mkPreludeTyConUnique 101
1285
1286 unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
1287     opaqueTyConKey :: Unique
1288 unknownTyConKey                         = mkPreludeTyConUnique 129
1289 unknown1TyConKey                        = mkPreludeTyConUnique 130
1290 unknown2TyConKey                        = mkPreludeTyConUnique 131
1291 unknown3TyConKey                        = mkPreludeTyConUnique 132
1292 opaqueTyConKey                          = mkPreludeTyConUnique 133
1293
1294 stringTyConKey :: Unique
1295 stringTyConKey                          = mkPreludeTyConUnique 134
1296
1297 -- Generics (Unique keys)
1298 v1TyConKey, u1TyConKey, par1TyConKey, rec1TyConKey,
1299   k1TyConKey, m1TyConKey, sumTyConKey, prodTyConKey,
1300   compTyConKey, rTyConKey, pTyConKey, dTyConKey,
1301   cTyConKey, sTyConKey, rec0TyConKey, par0TyConKey,
1302   d1TyConKey, c1TyConKey, s1TyConKey, noSelTyConKey,
1303   repTyConKey, rep1TyConKey :: Unique
1304
1305 v1TyConKey    = mkPreludeTyConUnique 135
1306 u1TyConKey    = mkPreludeTyConUnique 136
1307 par1TyConKey  = mkPreludeTyConUnique 137
1308 rec1TyConKey  = mkPreludeTyConUnique 138
1309 k1TyConKey    = mkPreludeTyConUnique 139
1310 m1TyConKey    = mkPreludeTyConUnique 140
1311
1312 sumTyConKey   = mkPreludeTyConUnique 141
1313 prodTyConKey  = mkPreludeTyConUnique 142
1314 compTyConKey  = mkPreludeTyConUnique 143
1315
1316 rTyConKey = mkPreludeTyConUnique 144
1317 pTyConKey = mkPreludeTyConUnique 145
1318 dTyConKey = mkPreludeTyConUnique 146
1319 cTyConKey = mkPreludeTyConUnique 147
1320 sTyConKey = mkPreludeTyConUnique 148
1321
1322 rec0TyConKey  = mkPreludeTyConUnique 149
1323 par0TyConKey  = mkPreludeTyConUnique 150
1324 d1TyConKey    = mkPreludeTyConUnique 151
1325 c1TyConKey    = mkPreludeTyConUnique 152
1326 s1TyConKey    = mkPreludeTyConUnique 153
1327 noSelTyConKey = mkPreludeTyConUnique 154
1328
1329 repTyConKey  = mkPreludeTyConUnique 155
1330 rep1TyConKey = mkPreludeTyConUnique 156
1331 >>>>>>> 18691d440f90a3dff4ef538091c886af505e5cf5
1332
1333 ---------------- Template Haskell -------------------
1334 --      USES TyConUniques 200-299
1335 -----------------------------------------------------
1336
1337 unitTyConKey :: Unique
1338 unitTyConKey = mkTupleTyConUnique Boxed 0
1339 \end{code}
1340
1341 %************************************************************************
1342 %*                                                                      *
1343 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
1344 %*                                                                      *
1345 %************************************************************************
1346
1347 \begin{code}
1348 charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
1349     floatDataConKey, intDataConKey, nilDataConKey, ratioDataConKey,
1350     stableNameDataConKey, trueDataConKey, wordDataConKey,
1351     ioDataConKey, integerDataConKey :: Unique
1352 charDataConKey                          = mkPreludeDataConUnique  1
1353 consDataConKey                          = mkPreludeDataConUnique  2
1354 doubleDataConKey                        = mkPreludeDataConUnique  3
1355 falseDataConKey                         = mkPreludeDataConUnique  4
1356 floatDataConKey                         = mkPreludeDataConUnique  5
1357 intDataConKey                           = mkPreludeDataConUnique  6
1358 nilDataConKey                           = mkPreludeDataConUnique 11
1359 ratioDataConKey                         = mkPreludeDataConUnique 12
1360 stableNameDataConKey                    = mkPreludeDataConUnique 14
1361 trueDataConKey                          = mkPreludeDataConUnique 15
1362 wordDataConKey                          = mkPreludeDataConUnique 16
1363 ioDataConKey                            = mkPreludeDataConUnique 17
1364 integerDataConKey                       = mkPreludeDataConUnique 18
1365
1366 -- Generic data constructors
1367 crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
1368 crossDataConKey                         = mkPreludeDataConUnique 20
1369 inlDataConKey                           = mkPreludeDataConUnique 21
1370 inrDataConKey                           = mkPreludeDataConUnique 22
1371 genUnitDataConKey                       = mkPreludeDataConUnique 23
1372
1373 -- Data constructor for parallel arrays
1374 parrDataConKey :: Unique
1375 parrDataConKey                          = mkPreludeDataConUnique 24
1376
1377 leftDataConKey, rightDataConKey :: Unique
1378 leftDataConKey                          = mkPreludeDataConUnique 25
1379 rightDataConKey                         = mkPreludeDataConUnique 26
1380
1381 -- Data constructor for Heterogeneous Metaprogramming code types
1382 hetMetCodeTypeDataConKey :: Unique
1383 hetMetCodeTypeDataConKey                        = mkPreludeDataConUnique 27
1384 \end{code}
1385
1386 %************************************************************************
1387 %*                                                                      *
1388 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
1389 %*                                                                      *
1390 %************************************************************************
1391
1392 \begin{code}
1393 absentErrorIdKey, augmentIdKey, appendIdKey, buildIdKey, errorIdKey,
1394     foldlIdKey, foldrIdKey, recSelErrorIdKey, 
1395     integerMinusOneIdKey, integerPlusOneIdKey,
1396     integerPlusTwoIdKey, integerZeroIdKey,
1397     int2IntegerIdKey, seqIdKey, irrefutPatErrorIdKey, eqStringIdKey,
1398     noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
1399     runtimeErrorIdKey, parErrorIdKey, parIdKey, patErrorIdKey,
1400     realWorldPrimIdKey, recConErrorIdKey, recUpdErrorIdKey,
1401     traceIdKey, wildCardKey,
1402     unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
1403     unpackCStringFoldrIdKey, unpackCStringIdKey :: Unique
1404 wildCardKey                   = mkPreludeMiscIdUnique  0  -- See Note [WildCard]
1405 absentErrorIdKey              = mkPreludeMiscIdUnique  1
1406 augmentIdKey                  = mkPreludeMiscIdUnique  3
1407 appendIdKey                   = mkPreludeMiscIdUnique  4
1408 buildIdKey                    = mkPreludeMiscIdUnique  5
1409 errorIdKey                    = mkPreludeMiscIdUnique  6
1410 foldlIdKey                    = mkPreludeMiscIdUnique  7
1411 foldrIdKey                    = mkPreludeMiscIdUnique  8
1412 recSelErrorIdKey              = mkPreludeMiscIdUnique  9
1413 integerMinusOneIdKey          = mkPreludeMiscIdUnique 10
1414 integerPlusOneIdKey           = mkPreludeMiscIdUnique 11
1415 integerPlusTwoIdKey           = mkPreludeMiscIdUnique 12
1416 integerZeroIdKey              = mkPreludeMiscIdUnique 13
1417 int2IntegerIdKey              = mkPreludeMiscIdUnique 14
1418 seqIdKey                      = mkPreludeMiscIdUnique 15
1419 irrefutPatErrorIdKey          = mkPreludeMiscIdUnique 16
1420 eqStringIdKey                 = mkPreludeMiscIdUnique 17
1421 noMethodBindingErrorIdKey     = mkPreludeMiscIdUnique 18
1422 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
1423 runtimeErrorIdKey             = mkPreludeMiscIdUnique 20 
1424 parErrorIdKey                 = mkPreludeMiscIdUnique 21
1425 parIdKey                      = mkPreludeMiscIdUnique 22
1426 patErrorIdKey                 = mkPreludeMiscIdUnique 23
1427 realWorldPrimIdKey            = mkPreludeMiscIdUnique 24
1428 recConErrorIdKey              = mkPreludeMiscIdUnique 25
1429 recUpdErrorIdKey              = mkPreludeMiscIdUnique 26
1430 traceIdKey                    = mkPreludeMiscIdUnique 27
1431 unpackCStringUtf8IdKey        = mkPreludeMiscIdUnique 28
1432 unpackCStringAppendIdKey      = mkPreludeMiscIdUnique 29
1433 unpackCStringFoldrIdKey       = mkPreludeMiscIdUnique 30
1434 unpackCStringIdKey            = mkPreludeMiscIdUnique 31
1435
1436 unsafeCoerceIdKey, concatIdKey, filterIdKey, zipIdKey, bindIOIdKey,
1437     returnIOIdKey, deRefStablePtrIdKey, newStablePtrIdKey,
1438     smallIntegerIdKey, plusIntegerIdKey, timesIntegerIdKey,
1439     printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
1440     fstIdKey, sndIdKey, otherwiseIdKey, assertIdKey, runSTRepIdKey :: Unique
1441 unsafeCoerceIdKey             = mkPreludeMiscIdUnique 32
1442 concatIdKey                   = mkPreludeMiscIdUnique 33
1443 filterIdKey                   = mkPreludeMiscIdUnique 34
1444 zipIdKey                      = mkPreludeMiscIdUnique 35
1445 bindIOIdKey                   = mkPreludeMiscIdUnique 36
1446 returnIOIdKey                 = mkPreludeMiscIdUnique 37
1447 deRefStablePtrIdKey           = mkPreludeMiscIdUnique 38
1448 newStablePtrIdKey             = mkPreludeMiscIdUnique 39
1449 smallIntegerIdKey             = mkPreludeMiscIdUnique 40
1450 plusIntegerIdKey              = mkPreludeMiscIdUnique 41
1451 timesIntegerIdKey             = mkPreludeMiscIdUnique 42
1452 printIdKey                    = mkPreludeMiscIdUnique 43
1453 failIOIdKey                   = mkPreludeMiscIdUnique 44
1454 nullAddrIdKey                 = mkPreludeMiscIdUnique 46
1455 voidArgIdKey                  = mkPreludeMiscIdUnique 47
1456 fstIdKey                      = mkPreludeMiscIdUnique 49
1457 sndIdKey                      = mkPreludeMiscIdUnique 50
1458 otherwiseIdKey                = mkPreludeMiscIdUnique 51
1459 assertIdKey                   = mkPreludeMiscIdUnique 53
1460 runSTRepIdKey                 = mkPreludeMiscIdUnique 54
1461
1462 rootMainKey, runMainKey :: Unique
1463 rootMainKey                   = mkPreludeMiscIdUnique 55
1464 runMainKey                    = mkPreludeMiscIdUnique 56
1465
1466 thenIOIdKey, lazyIdKey, assertErrorIdKey :: Unique
1467 thenIOIdKey                   = mkPreludeMiscIdUnique 59
1468 lazyIdKey                     = mkPreludeMiscIdUnique 60
1469 assertErrorIdKey              = mkPreludeMiscIdUnique 61
1470
1471 breakpointIdKey, breakpointCondIdKey, breakpointAutoIdKey,
1472     breakpointJumpIdKey, breakpointCondJumpIdKey,
1473     breakpointAutoJumpIdKey :: Unique
1474 breakpointIdKey               = mkPreludeMiscIdUnique 62
1475 breakpointCondIdKey           = mkPreludeMiscIdUnique 63
1476 breakpointAutoIdKey           = mkPreludeMiscIdUnique 64
1477 breakpointJumpIdKey           = mkPreludeMiscIdUnique 65
1478 breakpointCondJumpIdKey       = mkPreludeMiscIdUnique 66
1479 breakpointAutoJumpIdKey       = mkPreludeMiscIdUnique 67
1480
1481 inlineIdKey :: Unique
1482 inlineIdKey                   = mkPreludeMiscIdUnique 68
1483
1484 mapIdKey, groupWithIdKey, dollarIdKey :: Unique
1485 mapIdKey              = mkPreludeMiscIdUnique 69
1486 groupWithIdKey        = mkPreludeMiscIdUnique 70
1487 dollarIdKey           = mkPreludeMiscIdUnique 71
1488
1489 coercionTokenIdKey :: Unique
1490 coercionTokenIdKey    = mkPreludeMiscIdUnique 72
1491
1492 -- Parallel array functions
1493 singletonPIdKey, nullPIdKey, lengthPIdKey, replicatePIdKey, mapPIdKey,
1494     filterPIdKey, zipPIdKey, crossMapPIdKey, indexPIdKey, toPIdKey,
1495     enumFromToPIdKey, enumFromThenToPIdKey, emptyPIdKey, appPIdKey :: Unique
1496 singletonPIdKey               = mkPreludeMiscIdUnique 79
1497 nullPIdKey                    = mkPreludeMiscIdUnique 80
1498 lengthPIdKey                  = mkPreludeMiscIdUnique 81
1499 replicatePIdKey               = mkPreludeMiscIdUnique 82
1500 mapPIdKey                     = mkPreludeMiscIdUnique 83
1501 filterPIdKey                  = mkPreludeMiscIdUnique 84
1502 zipPIdKey                     = mkPreludeMiscIdUnique 85
1503 crossMapPIdKey                = mkPreludeMiscIdUnique 86
1504 indexPIdKey                   = mkPreludeMiscIdUnique 87
1505 toPIdKey                      = mkPreludeMiscIdUnique 88
1506 enumFromToPIdKey              = mkPreludeMiscIdUnique 89
1507 enumFromThenToPIdKey          = mkPreludeMiscIdUnique 90
1508 emptyPIdKey                   = mkPreludeMiscIdUnique 91
1509 appPIdKey                     = mkPreludeMiscIdUnique 92
1510
1511 -- dotnet interop
1512 unmarshalObjectIdKey, marshalObjectIdKey, marshalStringIdKey,
1513     unmarshalStringIdKey, checkDotnetResNameIdKey :: Unique
1514 unmarshalObjectIdKey          = mkPreludeMiscIdUnique 94
1515 marshalObjectIdKey            = mkPreludeMiscIdUnique 95
1516 marshalStringIdKey            = mkPreludeMiscIdUnique 96
1517 unmarshalStringIdKey          = mkPreludeMiscIdUnique 97
1518 checkDotnetResNameIdKey       = mkPreludeMiscIdUnique 98
1519
1520 \end{code}
1521
1522 Certain class operations from Prelude classes.  They get their own
1523 uniques so we can look them up easily when we want to conjure them up
1524 during type checking.
1525
1526 \begin{code}
1527         -- Just a place holder for  unbound variables  produced by the renamer:
1528 unboundKey :: Unique
1529 unboundKey                    = mkPreludeMiscIdUnique 101 
1530
1531 fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
1532     enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
1533     enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
1534     failMClassOpKey, bindMClassOpKey, thenMClassOpKey, returnMClassOpKey,
1535     fmapClassOpKey
1536     :: Unique
1537 fromIntegerClassOpKey         = mkPreludeMiscIdUnique 102
1538 minusClassOpKey               = mkPreludeMiscIdUnique 103
1539 fromRationalClassOpKey        = mkPreludeMiscIdUnique 104
1540 enumFromClassOpKey            = mkPreludeMiscIdUnique 105
1541 enumFromThenClassOpKey        = mkPreludeMiscIdUnique 106
1542 enumFromToClassOpKey          = mkPreludeMiscIdUnique 107
1543 enumFromThenToClassOpKey      = mkPreludeMiscIdUnique 108
1544 eqClassOpKey                  = mkPreludeMiscIdUnique 109
1545 geClassOpKey                  = mkPreludeMiscIdUnique 110
1546 negateClassOpKey              = mkPreludeMiscIdUnique 111
1547 failMClassOpKey               = mkPreludeMiscIdUnique 112
1548 bindMClassOpKey               = mkPreludeMiscIdUnique 113 -- (>>=)
1549 thenMClassOpKey               = mkPreludeMiscIdUnique 114 -- (>>)
1550 fmapClassOpKey                = mkPreludeMiscIdUnique 115
1551 returnMClassOpKey             = mkPreludeMiscIdUnique 117
1552
1553 -- Recursive do notation
1554 mfixIdKey :: Unique
1555 mfixIdKey       = mkPreludeMiscIdUnique 118
1556
1557 -- Arrow notation
1558 arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
1559     loopAIdKey :: Unique
1560 arrAIdKey       = mkPreludeMiscIdUnique 119
1561 composeAIdKey   = mkPreludeMiscIdUnique 120 -- >>>
1562 firstAIdKey     = mkPreludeMiscIdUnique 121
1563 appAIdKey       = mkPreludeMiscIdUnique 122
1564 choiceAIdKey    = mkPreludeMiscIdUnique 123 --  |||
1565 loopAIdKey      = mkPreludeMiscIdUnique 124
1566
1567 fromStringClassOpKey :: Unique
1568 fromStringClassOpKey          = mkPreludeMiscIdUnique 125
1569
1570 -- Annotation type checking
1571 toAnnotationWrapperIdKey :: Unique
1572 toAnnotationWrapperIdKey      = mkPreludeMiscIdUnique 126
1573
1574 -- Conversion functions
1575 fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
1576 fromIntegralIdKey    = mkPreludeMiscIdUnique 127
1577 realToFracIdKey      = mkPreludeMiscIdUnique 128
1578 toIntegerClassOpKey  = mkPreludeMiscIdUnique 129
1579 toRationalClassOpKey = mkPreludeMiscIdUnique 130
1580
1581 -- Monad comprehensions
1582 guardMIdKey, liftMIdKey, groupMIdKey, mzipIdKey :: Unique
1583 guardMIdKey     = mkPreludeMiscIdUnique 131
1584 liftMIdKey      = mkPreludeMiscIdUnique 132
1585 groupMIdKey     = mkPreludeMiscIdUnique 133
1586 mzipIdKey       = mkPreludeMiscIdUnique 134
1587
1588 -- code types
1589 hetMetCodeTypeTyConKey :: Unique
1590 hetMetCodeTypeTyConKey                  = mkPreludeTyConUnique 135
1591
1592 hetmet_guest_integer_literal_key, hetmet_guest_string_literal_key, hetmet_guest_char_literal_key :: Unique
1593 hetmet_guest_integer_literal_key = mkPreludeMiscIdUnique 134
1594 hetmet_guest_string_literal_key  = mkPreludeMiscIdUnique 135
1595 hetmet_guest_char_literal_key    = mkPreludeMiscIdUnique 136
1596 hetmet_PGArrow_key :: Unique
1597 hetmet_PGArrow_key = mkPreludeMiscIdUnique 137
1598 hetmet_pga_id_key :: Unique
1599 hetmet_pga_id_key = mkPreludeMiscIdUnique 138
1600 hetmet_pga_comp_key :: Unique
1601 hetmet_pga_comp_key = mkPreludeMiscIdUnique 139
1602 hetmet_pga_first_key :: Unique
1603 hetmet_pga_first_key = mkPreludeMiscIdUnique 140
1604 hetmet_pga_second_key :: Unique
1605 hetmet_pga_second_key = mkPreludeMiscIdUnique 141
1606 hetmet_pga_cancell_key :: Unique
1607 hetmet_pga_cancell_key = mkPreludeMiscIdUnique 142
1608 hetmet_pga_cancelr_key :: Unique
1609 hetmet_pga_cancelr_key = mkPreludeMiscIdUnique 143
1610 hetmet_pga_uncancell_key :: Unique
1611 hetmet_pga_uncancell_key = mkPreludeMiscIdUnique 144
1612 hetmet_pga_uncancelr_key :: Unique
1613 hetmet_pga_uncancelr_key = mkPreludeMiscIdUnique 145
1614 hetmet_pga_assoc_key :: Unique
1615 hetmet_pga_assoc_key = mkPreludeMiscIdUnique 146
1616 hetmet_pga_unassoc_key :: Unique
1617 hetmet_pga_unassoc_key = mkPreludeMiscIdUnique 147
1618 hetmet_pga_copy_key :: Unique
1619 hetmet_pga_copy_key = mkPreludeMiscIdUnique 148
1620 hetmet_pga_drop_key :: Unique
1621 hetmet_pga_drop_key = mkPreludeMiscIdUnique 149
1622 hetmet_pga_swap_key :: Unique
1623 hetmet_pga_swap_key = mkPreludeMiscIdUnique 150
1624 hetmet_pga_applyl_key :: Unique
1625 hetmet_pga_applyl_key = mkPreludeMiscIdUnique 151
1626 hetmet_pga_applyr_key :: Unique
1627 hetmet_pga_applyr_key = mkPreludeMiscIdUnique 152
1628 hetmet_pga_curryl_key :: Unique
1629 hetmet_pga_curryl_key = mkPreludeMiscIdUnique 153
1630 hetmet_pga_curryr_key :: Unique
1631 hetmet_pga_curryr_key = mkPreludeMiscIdUnique 154
1632 hetmet_flatten_key = mkPreludeMiscIdUnique 155
1633 hetmet_unflatten_key = mkPreludeMiscIdUnique 156
1634 hetmet_flattened_id_key = mkPreludeMiscIdUnique 157
1635 hetmet_PGArrow_unit_key :: Unique
1636 hetmet_PGArrow_unit_key = mkPreludeMiscIdUnique 158
1637 hetmet_PGArrow_tensor_key :: Unique
1638 hetmet_PGArrow_tensor_key = mkPreludeMiscIdUnique 159
1639 hetmet_PGArrow_exponent_key :: Unique
1640 hetmet_PGArrow_exponent_key = mkPreludeMiscIdUnique 160
1641
1642 hetmet_brak_key, hetmet_esc_key, hetmet_csp_key, hetmet_flatten_key, hetmet_unflatten_key, hetmet_flattened_id_key :: Unique
1643 hetmet_brak_key    = mkPreludeMiscIdUnique 161
1644 hetmet_esc_key     = mkPreludeMiscIdUnique 162
1645 hetmet_csp_key     = mkPreludeMiscIdUnique 163
1646
1647
1648 ---------------- Template Haskell -------------------
1649 --      USES IdUniques 200-499
1650 -----------------------------------------------------
1651 \end{code}
1652
1653
1654 %************************************************************************
1655 %*                                                                      *
1656 \subsection{Standard groups of types}
1657 %*                                                                      *
1658 %************************************************************************
1659
1660 \begin{code}
1661 numericTyKeys :: [Unique]
1662 numericTyKeys =
1663         [ wordTyConKey
1664         , intTyConKey
1665         , integerTyConKey
1666         , doubleTyConKey
1667         , floatTyConKey
1668         ]
1669
1670 kindKeys :: [Unique] 
1671 kindKeys = [ liftedTypeKindTyConKey
1672            , openTypeKindTyConKey
1673            , unliftedTypeKindTyConKey
1674            , ubxTupleKindTyConKey 
1675            , argTypeKindTyConKey ]
1676 \end{code}
1677
1678
1679 %************************************************************************
1680 %*                                                                      *
1681 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1682 %*                                                                      *
1683 %************************************************************************
1684
1685 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1686 even though every numeric class has these two as a superclass,
1687 because the list of ambiguous dictionaries hasn't been simplified.
1688
1689 \begin{code}
1690 numericClassKeys :: [Unique]
1691 numericClassKeys =
1692         [ numClassKey
1693         , realClassKey
1694         , integralClassKey
1695         ]
1696         ++ fractionalClassKeys
1697
1698 fractionalClassKeys :: [Unique]
1699 fractionalClassKeys = 
1700         [ fractionalClassKey
1701         , floatingClassKey
1702         , realFracClassKey
1703         , realFloatClassKey
1704         ]
1705
1706         -- the strictness analyser needs to know about numeric types
1707         -- (see SaAbsInt.lhs)
1708 needsDataDeclCtxtClassKeys :: [Unique]
1709 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1710         [ readClassKey
1711         ]
1712
1713 -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
1714 -- and are: "classes defined in the Prelude or a standard library"
1715 standardClassKeys :: [Unique]
1716 standardClassKeys = derivableClassKeys ++ numericClassKeys
1717                   ++ [randomClassKey, randomGenClassKey,
1718                       functorClassKey, 
1719                       monadClassKey, monadPlusClassKey,
1720                       isStringClassKey,
1721                       applicativeClassKey, foldableClassKey, traversableClassKey
1722                      ]
1723 \end{code}
1724
1725 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1726 (@TcDeriv@).
1727
1728 \begin{code}
1729 derivableClassKeys :: [Unique]
1730 derivableClassKeys
1731   = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1732       boundedClassKey, showClassKey, readClassKey ]
1733 \end{code}
1734