2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
4 \section[PrelNames]{Definitions of prelude modules and names}
7 Nota Bene: all Names defined in here should come from the base package
9 * ModuleNames for prelude modules,
10 e.g. pREL_BASE_Name :: ModuleName
12 * Modules for prelude modules
13 e.g. pREL_Base :: Module
15 * Uniques for Ids, DataCons, TyCons and Classes that the compiler
16 "knows about" in some way
17 e.g. intTyConKey :: Unique
18 minusClassOpKey :: Unique
20 * Names for Ids, DataCons, TyCons and Classes that the compiler
21 "knows about" in some way
22 e.g. intTyConName :: Name
24 One of these Names contains
25 (a) the module and occurrence name of the thing
27 The may way the compiler "knows about" one of these things is
28 where the type checker or desugarer needs to look it up. For
29 example, when desugaring list comprehensions the desugarer
30 needs to conjure up 'foldr'. It does this by looking up
31 foldrName in the environment.
33 * RdrNames for Ids, DataCons etc that the compiler may emit into
34 generated code (e.g. for deriving). It's not necessary to know
35 the uniques for these guys, only their names
40 Unique, Uniquable(..), hasKey, -- Re-exported for convenience
42 -----------------------------------------------------------
43 module PrelNames, -- A huge bunch of (a) Names, e.g. intTyConName
44 -- (b) Uniques e.g. intTyConKey
45 -- (c) Groups of classes and types
46 -- (d) miscellaneous things
47 -- So many that we export them all
50 #include "HsVersions.h"
52 import Module ( ModuleName, mkBasePkgModule, mkHomeModule, mkModuleName )
53 import OccName ( UserFS, dataName, tcName, clsName, varName,
57 import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
58 import Unique ( Unique, Uniquable(..), hasKey,
59 mkPreludeMiscIdUnique, mkPreludeDataConUnique,
60 mkPreludeTyConUnique, mkPreludeClassUnique,
61 mkTupleTyConUnique, isTupleKey
63 import BasicTypes ( Boxity(..) )
64 import Name ( Name, mkInternalName, mkKnownKeyExternalName, mkWiredInName, nameUnique )
65 import SrcLoc ( noSrcLoc )
66 import Util ( nOfThem )
67 import Panic ( panic )
74 %************************************************************************
76 \subsection{Local Names}
78 %************************************************************************
80 This *local* name is used by the interactive stuff
83 itName uniq = mkInternalName uniq (mkOccFS varName FSLIT("it")) noSrcLoc
87 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
88 -- during compiler debugging.
89 mkUnboundName :: RdrName -> Name
90 mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
92 isUnboundName :: Name -> Bool
93 isUnboundName name = name `hasKey` unboundKey
97 %************************************************************************
99 \subsection{Built-in-syntax names
101 %************************************************************************
103 Built-in syntax names are parsed directly into Exact RdrNames.
104 This predicate just identifies them.
107 isBuiltInSyntaxName :: Name -> Bool
108 isBuiltInSyntaxName n
110 || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
111 funTyConKey, parrTyConKey]
116 %************************************************************************
118 \subsection{Known key Names}
120 %************************************************************************
122 This section tells what the compiler knows about the assocation of
123 names with uniques. These ones are the *non* wired-in ones. The
124 wired in ones are defined in TysWiredIn etc.
127 basicKnownKeyNames :: [Name]
129 = [ -- Type constructors (synonyms especially)
130 ioTyConName, ioDataConName,
137 mutableByteArrayTyConName,
140 -- Classes. *Must* include:
141 -- classes that are grabbed by key (e.g., eqClassKey)
142 -- classes in "Class.standardClassKeys" (quite a few)
143 eqClassName, -- mentioned, derivable
144 ordClassName, -- derivable
145 boundedClassName, -- derivable
146 numClassName, -- mentioned, numeric
147 enumClassName, -- derivable
150 realClassName, -- numeric
151 integralClassName, -- numeric
152 fractionalClassName, -- numeric
153 floatingClassName, -- numeric
154 realFracClassName, -- numeric
155 realFloatClassName, -- numeric
156 cCallableClassName, -- mentioned, ccallish
157 cReturnableClassName, -- mentioned, ccallish
162 negateName, minusName,
163 fromRationalName, fromIntegerName,
167 enumFromName, enumFromThenName,
168 enumFromThenToName, enumFromToName,
169 enumFromToPName, enumFromThenToPName,
172 thenMName, bindMName, returnMName, failMName,
173 thenIOName, bindIOName, returnIOName, failIOName,
191 unpackCStringName, unpackCStringAppendName,
192 unpackCStringFoldrName, unpackCStringUtf8Name,
195 concatName, filterName,
196 zipName, foldrName, buildName, augmentName, appendName,
198 -- Parallel array operations
199 nullPName, lengthPName, replicatePName, mapPName,
200 filterPName, zipPName, crossPName, indexPName,
201 toPName, bpermutePName, bpermuteDftPName, indexOfPName,
203 -- FFI primitive types that are not wired-in.
204 stablePtrTyConName, ptrTyConName, funPtrTyConName, addrTyConName,
205 int8TyConName, int16TyConName, int32TyConName, int64TyConName,
206 word8TyConName, word16TyConName, word32TyConName, word64TyConName,
209 unsafeCoerceName, otherwiseIdName,
210 plusIntegerName, timesIntegerName,
211 eqStringName, assertName, assertErrorName, runSTRepName,
212 printName, splitName, fstName, sndName,
219 , objectTyConName, marshalObjectName, unmarshalObjectName
220 , marshalStringName, unmarshalStringName, checkDotnetResName
223 monadNames :: [Name] -- The monad ops need by a HsDo
224 monadNames = [returnMName, failMName, bindMName, thenMName]
228 %************************************************************************
230 \subsection{Module names}
232 %************************************************************************
235 --MetaHaskell Extension Add a new module here
237 pRELUDE_Name = mkModuleName "Prelude"
238 gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
239 pREL_BASE_Name = mkModuleName "GHC.Base"
240 pREL_ENUM_Name = mkModuleName "GHC.Enum"
241 pREL_SHOW_Name = mkModuleName "GHC.Show"
242 pREL_READ_Name = mkModuleName "GHC.Read"
243 pREL_NUM_Name = mkModuleName "GHC.Num"
244 pREL_LIST_Name = mkModuleName "GHC.List"
245 pREL_PARR_Name = mkModuleName "GHC.PArr"
246 pREL_TUP_Name = mkModuleName "Data.Tuple"
247 pREL_PACK_Name = mkModuleName "GHC.Pack"
248 pREL_CONC_Name = mkModuleName "GHC.Conc"
249 pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
250 pREL_ST_Name = mkModuleName "GHC.ST"
251 pREL_ARR_Name = mkModuleName "GHC.Arr"
252 pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
253 pREL_STABLE_Name = mkModuleName "GHC.Stable"
254 pREL_ADDR_Name = mkModuleName "GHC.Addr"
255 pREL_PTR_Name = mkModuleName "GHC.Ptr"
256 pREL_ERR_Name = mkModuleName "GHC.Err"
257 pREL_REAL_Name = mkModuleName "GHC.Real"
258 pREL_FLOAT_Name = mkModuleName "GHC.Float"
259 pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
260 sYSTEM_IO_Name = mkModuleName "System.IO"
261 dYNAMIC_Name = mkModuleName "Data.Dynamic"
262 tRAVERSE_Name = mkModuleName "Data.Traverse"
263 gENERICS_Name = mkModuleName "Data.Generics"
264 dOTNET_Name = mkModuleName "GHC.Dotnet"
266 rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
267 lEX_Name = mkModuleName "Text.Read.Lex"
269 mAIN_Name = mkModuleName "Main"
270 pREL_INT_Name = mkModuleName "GHC.Int"
271 pREL_WORD_Name = mkModuleName "GHC.Word"
272 mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
273 aDDR_Name = mkModuleName "Addr"
275 gLA_EXTS_Name = mkModuleName "GHC.Exts"
277 gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
278 pREL_BASE = mkBasePkgModule pREL_BASE_Name
279 pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
280 pREL_PTR = mkBasePkgModule pREL_PTR_Name
281 pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
282 pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
283 pREL_PACK = mkBasePkgModule pREL_PACK_Name
284 pREL_ERR = mkBasePkgModule pREL_ERR_Name
285 pREL_NUM = mkBasePkgModule pREL_NUM_Name
286 pREL_REAL = mkBasePkgModule pREL_REAL_Name
287 pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
288 pRELUDE = mkBasePkgModule pRELUDE_Name
290 -- MetaHaskell Extension text2 from Meta/work/gen.hs
291 mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
293 dOLLAR_MAIN_Name = mkModuleName "$Main" -- Root module for initialisation
294 dOLLAR_MAIN = mkHomeModule dOLLAR_MAIN_Name
295 iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
298 %************************************************************************
300 \subsection{Constructing the names of tuples
302 %************************************************************************
305 mkTupNameStr :: Boxity -> Int -> (ModuleName, UserFS)
307 mkTupNameStr Boxed 0 = (pREL_BASE_Name, FSLIT("()"))
308 mkTupNameStr Boxed 1 = panic "Name.mkTupNameStr: 1 ???"
309 mkTupNameStr Boxed 2 = (pREL_TUP_Name, mkFastString "(,)") -- not strictly necessary
310 mkTupNameStr Boxed 3 = (pREL_TUP_Name, mkFastString "(,,)") -- ditto
311 mkTupNameStr Boxed 4 = (pREL_TUP_Name, mkFastString "(,,,)") -- ditto
312 mkTupNameStr Boxed n = (pREL_TUP_Name, mkFastString ("(" ++ nOfThem (n-1) ',' ++ ")"))
314 mkTupNameStr Unboxed 0 = panic "Name.mkUbxTupNameStr: 0 ???"
315 mkTupNameStr Unboxed 1 = (gHC_PRIM_Name, mkFastString "(# #)") -- 1 and 0 both make sense!!!
316 mkTupNameStr Unboxed 2 = (gHC_PRIM_Name, mkFastString "(#,#)")
317 mkTupNameStr Unboxed 3 = (gHC_PRIM_Name, mkFastString "(#,,#)")
318 mkTupNameStr Unboxed 4 = (gHC_PRIM_Name, mkFastString "(#,,,#)")
319 mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ',' ++ "#)"))
323 %************************************************************************
327 %************************************************************************
330 eq_RDR = nameRdrName eqName
331 ge_RDR = nameRdrName geName
332 ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
333 le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
334 gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
335 compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
336 ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
337 eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
338 gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
340 eqClass_RDR = nameRdrName eqClassName
341 numClass_RDR = nameRdrName numClassName
342 ordClass_RDR = nameRdrName ordClassName
343 enumClass_RDR = nameRdrName enumClassName
344 monadClass_RDR = nameRdrName monadClassName
345 cCallableClass_RDR = nameRdrName cCallableClassName
346 cReturnableClass_RDR = nameRdrName cReturnableClassName
348 map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
349 append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
351 foldr_RDR = nameRdrName foldrName
352 build_RDR = nameRdrName buildName
353 returnM_RDR = nameRdrName returnMName
354 bindM_RDR = nameRdrName bindMName
355 failM_RDR = nameRdrName failMName
357 false_RDR = nameRdrName falseDataConName
358 true_RDR = nameRdrName trueDataConName
359 and_RDR = nameRdrName andName
361 error_RDR = nameRdrName errorName
363 fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
364 toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
365 mkInt_RDR = nameRdrName intDataConName
367 enumFrom_RDR = nameRdrName enumFromName
368 enumFromTo_RDR = nameRdrName enumFromToName
369 enumFromThen_RDR = nameRdrName enumFromThenName
370 enumFromThenTo_RDR = nameRdrName enumFromThenToName
372 ratioDataCon_RDR = nameRdrName ratioDataConName
373 plusInteger_RDR = nameRdrName plusIntegerName
374 timesInteger_RDR = nameRdrName timesIntegerName
376 ioDataCon_RDR = nameRdrName ioDataConName
378 eqString_RDR = nameRdrName eqStringName
379 unpackCString_RDR = nameRdrName unpackCStringName
380 unpackCStringFoldr_RDR = nameRdrName unpackCStringFoldrName
381 unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
383 newStablePtr_RDR = nameRdrName newStablePtrName
384 addrDataCon_RDR = dataQual_RDR aDDR_Name FSLIT("A#")
386 bindIO_RDR = nameRdrName bindIOName
387 returnIO_RDR = nameRdrName returnIOName
389 fromInteger_RDR = nameRdrName fromIntegerName
390 fromRational_RDR = nameRdrName fromRationalName
391 minus_RDR = nameRdrName minusName
392 times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
393 plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
395 compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
397 not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
398 getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
399 succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
400 pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
401 minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
402 maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
403 range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
404 inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
405 index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
407 readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
408 readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
409 readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
410 readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
411 readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
412 parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
413 choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
414 lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
416 punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
417 ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
418 symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
420 step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
421 alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
422 reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
423 prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
425 showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
426 showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
427 showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
428 showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
429 showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
430 showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
432 typeOf_RDR = varQual_RDR dYNAMIC_Name FSLIT("typeOf")
433 mkTypeRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkAppTy")
434 mkTyConRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkTyCon")
436 constr_RDR = dataQual_RDR gENERICS_Name FSLIT("Constr")
437 gfoldl_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldl")
438 gfoldr_RDR = varQual_RDR gENERICS_Name FSLIT("gfoldr")
439 gunfold_RDR = varQual_RDR gENERICS_Name FSLIT("gunfold")
440 gmapT_RDR = varQual_RDR gENERICS_Name FSLIT("gmapT")
441 gmapQ_RDR = varQual_RDR gENERICS_Name FSLIT("gmapQ")
442 gmapM_RDR = varQual_RDR gENERICS_Name FSLIT("gmapM")
443 conOf_RDR = varQual_RDR gENERICS_Name FSLIT("conOf")
444 consOf_RDR = varQual_RDR gENERICS_Name FSLIT("consOf")
446 undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
450 %************************************************************************
452 \subsection{Known-key names}
454 %************************************************************************
456 Many of these Names are not really "built in", but some parts of the
457 compiler (notably the deriving mechanism) need to mention their names,
458 and it's convenient to write them all down in one place.
460 --MetaHaskell Extension add the constrs and the lower case case
461 -- guys as well (perhaps) e.g. see trueDataConName below
465 dollarMainName = varQual dOLLAR_MAIN_Name FSLIT("main") dollarMainKey
466 runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
468 -- Stuff from GHC.Prim
469 superKindName = kindQual FSLIT("KX") kindConKey
470 superBoxityName = kindQual FSLIT("BX") boxityConKey
471 liftedConName = kindQual FSLIT("*") liftedConKey
472 unliftedConName = kindQual FSLIT("#") unliftedConKey
473 openKindConName = kindQual FSLIT("?") anyBoxConKey
474 typeConName = kindQual FSLIT("Type") typeConKey
476 funTyConName = tcQual gHC_PRIM_Name FSLIT("(->)") funTyConKey
477 charPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Char#") charPrimTyConKey
478 intPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int#") intPrimTyConKey
479 int32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int32#") int32PrimTyConKey
480 int64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Int64#") int64PrimTyConKey
481 wordPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word#") wordPrimTyConKey
482 word32PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word32#") word32PrimTyConKey
483 word64PrimTyConName = tcQual gHC_PRIM_Name FSLIT("Word64#") word64PrimTyConKey
484 addrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Addr#") addrPrimTyConKey
485 floatPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Float#") floatPrimTyConKey
486 doublePrimTyConName = tcQual gHC_PRIM_Name FSLIT("Double#") doublePrimTyConKey
487 statePrimTyConName = tcQual gHC_PRIM_Name FSLIT("State#") statePrimTyConKey
488 realWorldTyConName = tcQual gHC_PRIM_Name FSLIT("RealWorld") realWorldTyConKey
489 arrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Array#") arrayPrimTyConKey
490 byteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ByteArray#") byteArrayPrimTyConKey
491 mutableArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableArray#") mutableArrayPrimTyConKey
492 mutableByteArrayPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutableByteArray#") mutableByteArrayPrimTyConKey
493 mutVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MutVar#") mutVarPrimTyConKey
494 mVarPrimTyConName = tcQual gHC_PRIM_Name FSLIT("MVar#") mVarPrimTyConKey
495 stablePtrPrimTyConName = tcQual gHC_PRIM_Name FSLIT("StablePtr#") stablePtrPrimTyConKey
496 stableNamePrimTyConName = tcQual gHC_PRIM_Name FSLIT("StableName#") stableNamePrimTyConKey
497 foreignObjPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ForeignObj#") foreignObjPrimTyConKey
498 bcoPrimTyConName = tcQual gHC_PRIM_Name FSLIT("BCO#") bcoPrimTyConKey
499 weakPrimTyConName = tcQual gHC_PRIM_Name FSLIT("Weak#") weakPrimTyConKey
500 threadIdPrimTyConName = tcQual gHC_PRIM_Name FSLIT("ThreadId#") threadIdPrimTyConKey
501 cCallableClassName = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
502 cReturnableClassName = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
504 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey
505 nullAddrName = wVarQual gHC_PRIM_Name FSLIT("nullAddr#") nullAddrIdKey
506 seqName = wVarQual gHC_PRIM_Name FSLIT("seq") seqIdKey
507 realWorldName = wVarQual gHC_PRIM_Name FSLIT("realWorld#") realWorldPrimIdKey
509 -- PrelBase data types and constructors
510 charTyConName = wTcQual pREL_BASE_Name FSLIT("Char") charTyConKey
511 charDataConName = wDataQual pREL_BASE_Name FSLIT("C#") charDataConKey
512 intTyConName = wTcQual pREL_BASE_Name FSLIT("Int") intTyConKey
513 intDataConName = wDataQual pREL_BASE_Name FSLIT("I#") intDataConKey
514 orderingTyConName = tcQual pREL_BASE_Name FSLIT("Ordering") orderingTyConKey
515 boolTyConName = wTcQual pREL_BASE_Name FSLIT("Bool") boolTyConKey
516 falseDataConName = wDataQual pREL_BASE_Name FSLIT("False") falseDataConKey
517 trueDataConName = wDataQual pREL_BASE_Name FSLIT("True") trueDataConKey
518 listTyConName = wTcQual pREL_BASE_Name FSLIT("[]") listTyConKey
519 nilDataConName = wDataQual pREL_BASE_Name FSLIT("[]") nilDataConKey
520 consDataConName = wDataQual pREL_BASE_Name FSLIT(":") consDataConKey
521 eqName = varQual pREL_BASE_Name FSLIT("==") eqClassOpKey
522 geName = varQual pREL_BASE_Name FSLIT(">=") geClassOpKey
525 crossTyConName = tcQual pREL_BASE_Name FSLIT(":*:") crossTyConKey
526 crossDataConName = dataQual pREL_BASE_Name FSLIT(":*:") crossDataConKey
527 plusTyConName = wTcQual pREL_BASE_Name FSLIT(":+:") plusTyConKey
528 inlDataConName = wDataQual pREL_BASE_Name FSLIT("Inl") inlDataConKey
529 inrDataConName = wDataQual pREL_BASE_Name FSLIT("Inr") inrDataConKey
530 genUnitTyConName = wTcQual pREL_BASE_Name FSLIT("Unit") genUnitTyConKey
531 genUnitDataConName = wDataQual pREL_BASE_Name FSLIT("Unit") genUnitDataConKey
533 -- Base strings Strings
534 unpackCStringName = varQual pREL_BASE_Name FSLIT("unpackCString#") unpackCStringIdKey
535 unpackCStringAppendName = varQual pREL_BASE_Name FSLIT("unpackAppendCString#") unpackCStringAppendIdKey
536 unpackCStringFoldrName = varQual pREL_BASE_Name FSLIT("unpackFoldrCString#") unpackCStringFoldrIdKey
537 unpackCStringUtf8Name = varQual pREL_BASE_Name FSLIT("unpackCStringUtf8#") unpackCStringUtf8IdKey
538 eqStringName = varQual pREL_BASE_Name FSLIT("eqString") eqStringIdKey
540 -- Base classes (Eq, Ord, Functor)
541 eqClassName = clsQual pREL_BASE_Name FSLIT("Eq") eqClassKey
542 functorClassName = clsQual pREL_BASE_Name FSLIT("Functor") functorClassKey
543 ordClassName = clsQual pREL_BASE_Name FSLIT("Ord") ordClassKey
546 monadClassName = clsQual pREL_BASE_Name FSLIT("Monad") monadClassKey
547 thenMName = varQual pREL_BASE_Name FSLIT(">>") thenMClassOpKey
548 bindMName = varQual pREL_BASE_Name FSLIT(">>=") bindMClassOpKey
549 returnMName = varQual pREL_BASE_Name FSLIT("return") returnMClassOpKey
550 failMName = varQual pREL_BASE_Name FSLIT("fail") failMClassOpKey
553 -- Random PrelBase functions
554 otherwiseIdName = varQual pREL_BASE_Name FSLIT("otherwise") otherwiseIdKey
555 foldrName = varQual pREL_BASE_Name FSLIT("foldr") foldrIdKey
556 buildName = varQual pREL_BASE_Name FSLIT("build") buildIdKey
557 augmentName = varQual pREL_BASE_Name FSLIT("augment") augmentIdKey
558 appendName = varQual pREL_BASE_Name FSLIT("++") appendIdKey
559 andName = varQual pREL_BASE_Name FSLIT("&&") andIdKey
560 orName = varQual pREL_BASE_Name FSLIT("||") orIdKey
561 assertName = varQual pREL_BASE_Name FSLIT("assert") assertIdKey
562 lazyIdName = wVarQual pREL_BASE_Name FSLIT("lazy") lazyIdKey
565 fstName = varQual pREL_TUP_Name FSLIT("fst") fstIdKey
566 sndName = varQual pREL_TUP_Name FSLIT("snd") sndIdKey
569 numClassName = clsQual pREL_NUM_Name FSLIT("Num") numClassKey
570 fromIntegerName = varQual pREL_NUM_Name FSLIT("fromInteger") fromIntegerClassOpKey
571 minusName = varQual pREL_NUM_Name FSLIT("-") minusClassOpKey
572 negateName = varQual pREL_NUM_Name FSLIT("negate") negateClassOpKey
573 plusIntegerName = varQual pREL_NUM_Name FSLIT("plusInteger") plusIntegerIdKey
574 timesIntegerName = varQual pREL_NUM_Name FSLIT("timesInteger") timesIntegerIdKey
575 integerTyConName = wTcQual pREL_NUM_Name FSLIT("Integer") integerTyConKey
576 smallIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("S#") smallIntegerDataConKey
577 largeIntegerDataConName = wDataQual pREL_NUM_Name FSLIT("J#") largeIntegerDataConKey
579 -- PrelReal types and classes
580 rationalTyConName = tcQual pREL_REAL_Name FSLIT("Rational") rationalTyConKey
581 ratioTyConName = tcQual pREL_REAL_Name FSLIT("Ratio") ratioTyConKey
582 ratioDataConName = dataQual pREL_REAL_Name FSLIT(":%") ratioDataConKey
583 realClassName = clsQual pREL_REAL_Name FSLIT("Real") realClassKey
584 integralClassName = clsQual pREL_REAL_Name FSLIT("Integral") integralClassKey
585 realFracClassName = clsQual pREL_REAL_Name FSLIT("RealFrac") realFracClassKey
586 fractionalClassName = clsQual pREL_REAL_Name FSLIT("Fractional") fractionalClassKey
587 fromRationalName = varQual pREL_REAL_Name FSLIT("fromRational") fromRationalClassOpKey
590 floatTyConName = wTcQual pREL_FLOAT_Name FSLIT("Float") floatTyConKey
591 floatDataConName = wDataQual pREL_FLOAT_Name FSLIT("F#") floatDataConKey
592 doubleTyConName = wTcQual pREL_FLOAT_Name FSLIT("Double") doubleTyConKey
593 doubleDataConName = wDataQual pREL_FLOAT_Name FSLIT("D#") doubleDataConKey
594 floatingClassName = clsQual pREL_FLOAT_Name FSLIT("Floating") floatingClassKey
595 realFloatClassName = clsQual pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassKey
598 ixClassName = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
600 -- Class Typeable and Data
601 typeableClassName = clsQual dYNAMIC_Name FSLIT("Typeable") typeableClassKey
602 dataClassName = clsQual gENERICS_Name FSLIT("Data") dataClassKey
604 -- Enum module (Enum, Bounded)
605 enumClassName = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
606 enumFromName = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
607 enumFromToName = varQual pREL_ENUM_Name FSLIT("enumFromTo") enumFromToClassOpKey
608 enumFromThenName = varQual pREL_ENUM_Name FSLIT("enumFromThen") enumFromThenClassOpKey
609 enumFromThenToName = varQual pREL_ENUM_Name FSLIT("enumFromThenTo") enumFromThenToClassOpKey
610 boundedClassName = clsQual pREL_ENUM_Name FSLIT("Bounded") boundedClassKey
613 concatName = varQual pREL_LIST_Name FSLIT("concat") concatIdKey
614 filterName = varQual pREL_LIST_Name FSLIT("filter") filterIdKey
615 zipName = varQual pREL_LIST_Name FSLIT("zip") zipIdKey
618 showClassName = clsQual pREL_SHOW_Name FSLIT("Show") showClassKey
621 readClassName = clsQual pREL_READ_Name FSLIT("Read") readClassKey
623 -- parallel array types and functions
624 enumFromToPName = varQual pREL_PARR_Name FSLIT("enumFromToP") enumFromToPIdKey
625 enumFromThenToPName= varQual pREL_PARR_Name FSLIT("enumFromThenToP") enumFromThenToPIdKey
626 parrTyConName = wTcQual pREL_PARR_Name FSLIT("[::]") parrTyConKey
627 parrDataConName = wDataQual pREL_PARR_Name FSLIT("PArr") parrDataConKey
628 nullPName = varQual pREL_PARR_Name FSLIT("nullP") nullPIdKey
629 lengthPName = varQual pREL_PARR_Name FSLIT("lengthP") lengthPIdKey
630 replicatePName = varQual pREL_PARR_Name FSLIT("replicateP") replicatePIdKey
631 mapPName = varQual pREL_PARR_Name FSLIT("mapP") mapPIdKey
632 filterPName = varQual pREL_PARR_Name FSLIT("filterP") filterPIdKey
633 zipPName = varQual pREL_PARR_Name FSLIT("zipP") zipPIdKey
634 crossPName = varQual pREL_PARR_Name FSLIT("crossP") crossPIdKey
635 indexPName = varQual pREL_PARR_Name FSLIT("!:") indexPIdKey
636 toPName = varQual pREL_PARR_Name FSLIT("toP") toPIdKey
637 bpermutePName = varQual pREL_PARR_Name FSLIT("bpermuteP") bpermutePIdKey
638 bpermuteDftPName = varQual pREL_PARR_Name FSLIT("bpermuteDftP") bpermuteDftPIdKey
639 indexOfPName = varQual pREL_PARR_Name FSLIT("indexOfP") indexOfPIdKey
642 ioTyConName = tcQual pREL_IO_BASE_Name FSLIT("IO") ioTyConKey
643 ioDataConName = dataQual pREL_IO_BASE_Name FSLIT("IO") ioDataConKey
644 thenIOName = varQual pREL_IO_BASE_Name FSLIT("thenIO") thenIOIdKey
645 bindIOName = varQual pREL_IO_BASE_Name FSLIT("bindIO") bindIOIdKey
646 returnIOName = varQual pREL_IO_BASE_Name FSLIT("returnIO") returnIOIdKey
647 failIOName = varQual pREL_IO_BASE_Name FSLIT("failIO") failIOIdKey
650 printName = varQual sYSTEM_IO_Name FSLIT("print") printIdKey
652 -- Int, Word, and Addr things
653 int8TyConName = tcQual pREL_INT_Name FSLIT("Int8") int8TyConKey
654 int16TyConName = tcQual pREL_INT_Name FSLIT("Int16") int16TyConKey
655 int32TyConName = tcQual pREL_INT_Name FSLIT("Int32") int32TyConKey
656 int64TyConName = tcQual pREL_INT_Name FSLIT("Int64") int64TyConKey
659 word8TyConName = tcQual pREL_WORD_Name FSLIT("Word8") word8TyConKey
660 word16TyConName = tcQual pREL_WORD_Name FSLIT("Word16") word16TyConKey
661 word32TyConName = tcQual pREL_WORD_Name FSLIT("Word32") word32TyConKey
662 word64TyConName = tcQual pREL_WORD_Name FSLIT("Word64") word64TyConKey
663 wordTyConName = wTcQual pREL_WORD_Name FSLIT("Word") wordTyConKey
664 wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
667 addrTyConName = tcQual aDDR_Name FSLIT("Addr") addrTyConKey
670 ptrTyConName = tcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
671 funPtrTyConName = tcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
674 byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
675 mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("MutableByteArray") mutableByteArrayTyConKey
677 -- Foreign objects and weak pointers
678 stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
679 newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
682 errorName = wVarQual pREL_ERR_Name FSLIT("error") errorIdKey
683 assertErrorName = wVarQual pREL_ERR_Name FSLIT("assertError") assertErrorIdKey
684 recSelErrorName = wVarQual pREL_ERR_Name FSLIT("recSelError") recSelErrorIdKey
685 runtimeErrorName = wVarQual pREL_ERR_Name FSLIT("runtimeError") runtimeErrorIdKey
686 irrefutPatErrorName = wVarQual pREL_ERR_Name FSLIT("irrefutPatError") irrefutPatErrorIdKey
687 recConErrorName = wVarQual pREL_ERR_Name FSLIT("recConError") recConErrorIdKey
688 patErrorName = wVarQual pREL_ERR_Name FSLIT("patError") patErrorIdKey
689 noMethodBindingErrorName = wVarQual pREL_ERR_Name FSLIT("noMethodBindingError") noMethodBindingErrorIdKey
690 nonExhaustiveGuardsErrorName
691 = wVarQual pREL_ERR_Name FSLIT("nonExhaustiveGuardsError") nonExhaustiveGuardsErrorIdKey
694 runSTRepName = varQual pREL_ST_Name FSLIT("runSTRep") runSTRepIdKey
696 -- The "split" Id for splittable implicit parameters
697 splitName = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
699 -- Recursive-do notation
700 mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
703 objectTyConName = wTcQual dOTNET_Name FSLIT("Object") objectTyConKey
704 unmarshalObjectName = varQual dOTNET_Name FSLIT("unmarshalObject") unmarshalObjectIdKey
705 marshalObjectName = varQual dOTNET_Name FSLIT("marshalObject") marshalObjectIdKey
706 marshalStringName = varQual dOTNET_Name FSLIT("marshalString") marshalStringIdKey
707 unmarshalStringName = varQual dOTNET_Name FSLIT("unmarshalString") unmarshalStringIdKey
708 checkDotnetResName = varQual dOTNET_Name FSLIT("checkResult") checkDotnetResNameIdKey
712 %************************************************************************
714 \subsection{Local helpers}
716 %************************************************************************
718 All these are original names; hence mkOrig
721 varQual = mk_known_key_name varName
722 dataQual = mk_known_key_name dataName -- All the constructor names here are for the DataCon
723 -- itself, which lives in the VarName name space
724 tcQual = mk_known_key_name tcName
725 clsQual = mk_known_key_name clsName
727 wVarQual = mk_wired_in_name varName -- The wired-in analogues
728 wDataQual = mk_wired_in_name dataName
729 wTcQual = mk_wired_in_name tcName
731 varQual_RDR mod str = mkOrig mod (mkOccFS varName str) -- The RDR analogues
732 dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
733 tcQual_RDR mod str = mkOrig mod (mkOccFS tcName str)
734 clsQual_RDR mod str = mkOrig mod (mkOccFS clsName str)
736 mk_known_key_name space mod str uniq
737 = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq
738 mk_wired_in_name space mod str uniq
739 = mkWiredInName (mkBasePkgModule mod) (mkOccFS space str) uniq
741 kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
742 -- Kinds are not z-encoded in interface file, hence mkKindOccFS
743 -- And they don't come from any particular module; indeed we always
744 -- want to print them unqualified. Hence the LocalName
747 %************************************************************************
749 \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
751 %************************************************************************
752 --MetaHaskell extension hand allocate keys here
755 boundedClassKey = mkPreludeClassUnique 1
756 enumClassKey = mkPreludeClassUnique 2
757 eqClassKey = mkPreludeClassUnique 3
758 typeableClassKey = mkPreludeClassUnique 4
759 floatingClassKey = mkPreludeClassUnique 5
760 fractionalClassKey = mkPreludeClassUnique 6
761 integralClassKey = mkPreludeClassUnique 7
762 monadClassKey = mkPreludeClassUnique 8
763 dataClassKey = mkPreludeClassUnique 9
764 functorClassKey = mkPreludeClassUnique 10
765 numClassKey = mkPreludeClassUnique 11
766 ordClassKey = mkPreludeClassUnique 12
767 readClassKey = mkPreludeClassUnique 13
768 realClassKey = mkPreludeClassUnique 14
769 realFloatClassKey = mkPreludeClassUnique 15
770 realFracClassKey = mkPreludeClassUnique 16
771 showClassKey = mkPreludeClassUnique 17
772 cCallableClassKey = mkPreludeClassUnique 18
773 cReturnableClassKey = mkPreludeClassUnique 19
774 ixClassKey = mkPreludeClassUnique 20
777 %************************************************************************
779 \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
781 %************************************************************************
784 addrPrimTyConKey = mkPreludeTyConUnique 1
785 addrTyConKey = mkPreludeTyConUnique 2
786 arrayPrimTyConKey = mkPreludeTyConUnique 3
787 boolTyConKey = mkPreludeTyConUnique 4
788 byteArrayPrimTyConKey = mkPreludeTyConUnique 5
789 charPrimTyConKey = mkPreludeTyConUnique 7
790 charTyConKey = mkPreludeTyConUnique 8
791 doublePrimTyConKey = mkPreludeTyConUnique 9
792 doubleTyConKey = mkPreludeTyConUnique 10
793 floatPrimTyConKey = mkPreludeTyConUnique 11
794 floatTyConKey = mkPreludeTyConUnique 12
795 funTyConKey = mkPreludeTyConUnique 13
796 intPrimTyConKey = mkPreludeTyConUnique 14
797 intTyConKey = mkPreludeTyConUnique 15
798 int8TyConKey = mkPreludeTyConUnique 16
799 int16TyConKey = mkPreludeTyConUnique 17
800 int32PrimTyConKey = mkPreludeTyConUnique 18
801 int32TyConKey = mkPreludeTyConUnique 19
802 int64PrimTyConKey = mkPreludeTyConUnique 20
803 int64TyConKey = mkPreludeTyConUnique 21
804 integerTyConKey = mkPreludeTyConUnique 22
805 listTyConKey = mkPreludeTyConUnique 23
806 foreignObjPrimTyConKey = mkPreludeTyConUnique 24
807 weakPrimTyConKey = mkPreludeTyConUnique 27
808 mutableArrayPrimTyConKey = mkPreludeTyConUnique 28
809 mutableByteArrayPrimTyConKey = mkPreludeTyConUnique 29
810 orderingTyConKey = mkPreludeTyConUnique 30
811 mVarPrimTyConKey = mkPreludeTyConUnique 31
812 ratioTyConKey = mkPreludeTyConUnique 32
813 rationalTyConKey = mkPreludeTyConUnique 33
814 realWorldTyConKey = mkPreludeTyConUnique 34
815 stablePtrPrimTyConKey = mkPreludeTyConUnique 35
816 stablePtrTyConKey = mkPreludeTyConUnique 36
817 statePrimTyConKey = mkPreludeTyConUnique 50
818 stableNamePrimTyConKey = mkPreludeTyConUnique 51
819 stableNameTyConKey = mkPreludeTyConUnique 52
820 mutableByteArrayTyConKey = mkPreludeTyConUnique 53
821 mutVarPrimTyConKey = mkPreludeTyConUnique 55
822 ioTyConKey = mkPreludeTyConUnique 56
823 byteArrayTyConKey = mkPreludeTyConUnique 57
824 wordPrimTyConKey = mkPreludeTyConUnique 58
825 wordTyConKey = mkPreludeTyConUnique 59
826 word8TyConKey = mkPreludeTyConUnique 60
827 word16TyConKey = mkPreludeTyConUnique 61
828 word32PrimTyConKey = mkPreludeTyConUnique 62
829 word32TyConKey = mkPreludeTyConUnique 63
830 word64PrimTyConKey = mkPreludeTyConUnique 64
831 word64TyConKey = mkPreludeTyConUnique 65
832 liftedConKey = mkPreludeTyConUnique 66
833 unliftedConKey = mkPreludeTyConUnique 67
834 anyBoxConKey = mkPreludeTyConUnique 68
835 kindConKey = mkPreludeTyConUnique 69
836 boxityConKey = mkPreludeTyConUnique 70
837 typeConKey = mkPreludeTyConUnique 71
838 threadIdPrimTyConKey = mkPreludeTyConUnique 72
839 bcoPrimTyConKey = mkPreludeTyConUnique 73
840 ptrTyConKey = mkPreludeTyConUnique 74
841 funPtrTyConKey = mkPreludeTyConUnique 75
843 -- Generic Type Constructors
844 crossTyConKey = mkPreludeTyConUnique 79
845 plusTyConKey = mkPreludeTyConUnique 80
846 genUnitTyConKey = mkPreludeTyConUnique 81
848 -- Parallel array type constructor
849 parrTyConKey = mkPreludeTyConUnique 82
852 objectTyConKey = mkPreludeTyConUnique 83
854 ---------------- Template Haskell -------------------
855 -- USES TyConUniques 100-119
856 -----------------------------------------------------
858 unitTyConKey = mkTupleTyConUnique Boxed 0
861 %************************************************************************
863 \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
865 %************************************************************************
868 charDataConKey = mkPreludeDataConUnique 1
869 consDataConKey = mkPreludeDataConUnique 2
870 doubleDataConKey = mkPreludeDataConUnique 3
871 falseDataConKey = mkPreludeDataConUnique 4
872 floatDataConKey = mkPreludeDataConUnique 5
873 intDataConKey = mkPreludeDataConUnique 6
874 smallIntegerDataConKey = mkPreludeDataConUnique 7
875 largeIntegerDataConKey = mkPreludeDataConUnique 8
876 nilDataConKey = mkPreludeDataConUnique 11
877 ratioDataConKey = mkPreludeDataConUnique 12
878 stableNameDataConKey = mkPreludeDataConUnique 14
879 trueDataConKey = mkPreludeDataConUnique 15
880 wordDataConKey = mkPreludeDataConUnique 16
881 ioDataConKey = mkPreludeDataConUnique 17
883 -- Generic data constructors
884 crossDataConKey = mkPreludeDataConUnique 20
885 inlDataConKey = mkPreludeDataConUnique 21
886 inrDataConKey = mkPreludeDataConUnique 22
887 genUnitDataConKey = mkPreludeDataConUnique 23
889 -- Data constructor for parallel arrays
890 parrDataConKey = mkPreludeDataConUnique 24
893 %************************************************************************
895 \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
897 %************************************************************************
900 absentErrorIdKey = mkPreludeMiscIdUnique 1
901 augmentIdKey = mkPreludeMiscIdUnique 3
902 appendIdKey = mkPreludeMiscIdUnique 4
903 buildIdKey = mkPreludeMiscIdUnique 5
904 errorIdKey = mkPreludeMiscIdUnique 6
905 foldlIdKey = mkPreludeMiscIdUnique 7
906 foldrIdKey = mkPreludeMiscIdUnique 8
907 recSelErrorIdKey = mkPreludeMiscIdUnique 9
908 integerMinusOneIdKey = mkPreludeMiscIdUnique 10
909 integerPlusOneIdKey = mkPreludeMiscIdUnique 11
910 integerPlusTwoIdKey = mkPreludeMiscIdUnique 12
911 integerZeroIdKey = mkPreludeMiscIdUnique 13
912 int2IntegerIdKey = mkPreludeMiscIdUnique 14
913 seqIdKey = mkPreludeMiscIdUnique 15
914 irrefutPatErrorIdKey = mkPreludeMiscIdUnique 16
915 eqStringIdKey = mkPreludeMiscIdUnique 17
916 noMethodBindingErrorIdKey = mkPreludeMiscIdUnique 18
917 nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 19
918 runtimeErrorIdKey = mkPreludeMiscIdUnique 20
919 parErrorIdKey = mkPreludeMiscIdUnique 21
920 parIdKey = mkPreludeMiscIdUnique 22
921 patErrorIdKey = mkPreludeMiscIdUnique 23
922 realWorldPrimIdKey = mkPreludeMiscIdUnique 24
923 recConErrorIdKey = mkPreludeMiscIdUnique 25
924 recUpdErrorIdKey = mkPreludeMiscIdUnique 26
925 traceIdKey = mkPreludeMiscIdUnique 27
926 unpackCStringUtf8IdKey = mkPreludeMiscIdUnique 28
927 unpackCStringAppendIdKey = mkPreludeMiscIdUnique 29
928 unpackCStringFoldrIdKey = mkPreludeMiscIdUnique 30
929 unpackCStringIdKey = mkPreludeMiscIdUnique 31
931 unsafeCoerceIdKey = mkPreludeMiscIdUnique 32
932 concatIdKey = mkPreludeMiscIdUnique 33
933 filterIdKey = mkPreludeMiscIdUnique 34
934 zipIdKey = mkPreludeMiscIdUnique 35
935 bindIOIdKey = mkPreludeMiscIdUnique 36
936 returnIOIdKey = mkPreludeMiscIdUnique 37
937 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38
938 newStablePtrIdKey = mkPreludeMiscIdUnique 39
939 plusIntegerIdKey = mkPreludeMiscIdUnique 41
940 timesIntegerIdKey = mkPreludeMiscIdUnique 42
941 printIdKey = mkPreludeMiscIdUnique 43
942 failIOIdKey = mkPreludeMiscIdUnique 44
943 nullAddrIdKey = mkPreludeMiscIdUnique 46
944 voidArgIdKey = mkPreludeMiscIdUnique 47
945 splitIdKey = mkPreludeMiscIdUnique 48
946 fstIdKey = mkPreludeMiscIdUnique 49
947 sndIdKey = mkPreludeMiscIdUnique 50
948 otherwiseIdKey = mkPreludeMiscIdUnique 51
949 assertIdKey = mkPreludeMiscIdUnique 53
950 runSTRepIdKey = mkPreludeMiscIdUnique 54
952 dollarMainKey = mkPreludeMiscIdUnique 55
953 runMainKey = mkPreludeMiscIdUnique 56
955 andIdKey = mkPreludeMiscIdUnique 57
956 orIdKey = mkPreludeMiscIdUnique 58
957 thenIOIdKey = mkPreludeMiscIdUnique 59
958 lazyIdKey = mkPreludeMiscIdUnique 60
959 assertErrorIdKey = mkPreludeMiscIdUnique 61
961 -- Parallel array functions
962 nullPIdKey = mkPreludeMiscIdUnique 80
963 lengthPIdKey = mkPreludeMiscIdUnique 81
964 replicatePIdKey = mkPreludeMiscIdUnique 82
965 mapPIdKey = mkPreludeMiscIdUnique 83
966 filterPIdKey = mkPreludeMiscIdUnique 84
967 zipPIdKey = mkPreludeMiscIdUnique 85
968 crossPIdKey = mkPreludeMiscIdUnique 86
969 indexPIdKey = mkPreludeMiscIdUnique 87
970 toPIdKey = mkPreludeMiscIdUnique 88
971 enumFromToPIdKey = mkPreludeMiscIdUnique 89
972 enumFromThenToPIdKey = mkPreludeMiscIdUnique 90
973 bpermutePIdKey = mkPreludeMiscIdUnique 91
974 bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
975 indexOfPIdKey = mkPreludeMiscIdUnique 93
978 unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
979 marshalObjectIdKey = mkPreludeMiscIdUnique 95
980 marshalStringIdKey = mkPreludeMiscIdUnique 96
981 unmarshalStringIdKey = mkPreludeMiscIdUnique 97
982 checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
986 Certain class operations from Prelude classes. They get their own
987 uniques so we can look them up easily when we want to conjure them up
988 during type checking.
991 -- Just a place holder for unbound variables produced by the renamer:
992 unboundKey = mkPreludeMiscIdUnique 101
994 fromIntegerClassOpKey = mkPreludeMiscIdUnique 102
995 minusClassOpKey = mkPreludeMiscIdUnique 103
996 fromRationalClassOpKey = mkPreludeMiscIdUnique 104
997 enumFromClassOpKey = mkPreludeMiscIdUnique 105
998 enumFromThenClassOpKey = mkPreludeMiscIdUnique 106
999 enumFromToClassOpKey = mkPreludeMiscIdUnique 107
1000 enumFromThenToClassOpKey = mkPreludeMiscIdUnique 108
1001 eqClassOpKey = mkPreludeMiscIdUnique 109
1002 geClassOpKey = mkPreludeMiscIdUnique 110
1003 negateClassOpKey = mkPreludeMiscIdUnique 111
1004 failMClassOpKey = mkPreludeMiscIdUnique 112
1005 bindMClassOpKey = mkPreludeMiscIdUnique 113 -- (>>=)
1006 thenMClassOpKey = mkPreludeMiscIdUnique 114 -- (>>)
1007 returnMClassOpKey = mkPreludeMiscIdUnique 117
1009 -- Recursive do notation
1010 mfixIdKey = mkPreludeMiscIdUnique 118
1012 ---------------- Template Haskell -------------------
1013 -- USES IdUniques 200-299
1014 -----------------------------------------------------
1018 %************************************************************************
1020 \subsection{Standard groups of types}
1022 %************************************************************************
1034 -- Renamer always imports these data decls replete with constructors
1035 -- so that desugarer can always see their constructors. Ugh!
1040 , mutableByteArrayTyConKey
1054 %************************************************************************
1056 \subsection[Class-std-groups]{Standard groups of Prelude classes}
1058 %************************************************************************
1060 NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
1061 even though every numeric class has these two as a superclass,
1062 because the list of ambiguous dictionaries hasn't been simplified.
1070 ++ fractionalClassKeys
1072 fractionalClassKeys =
1073 [ fractionalClassKey
1079 -- the strictness analyser needs to know about numeric types
1080 -- (see SaAbsInt.lhs)
1081 needsDataDeclCtxtClassKeys = -- see comments in TcDeriv
1087 , cReturnableClassKey
1091 = derivableClassKeys ++ numericClassKeys ++ cCallishClassKeys
1093 -- We have to have "CCallable" and "CReturnable" in the standard
1094 -- classes, so that if you go...
1096 -- _ccall_ foo ... 93{-numeric literal-} ...
1098 -- ... it can do The Right Thing on the 93.
1100 noDictClassKeys -- These classes are used only for type annotations;
1101 -- they are not implemented by dictionaries, ever.
1105 @derivableClassKeys@ is also used in checking \tr{deriving} constructs
1110 = [ eqClassKey, ordClassKey, enumClassKey, ixClassKey,
1111 boundedClassKey, showClassKey, readClassKey ]