#include "HsVersions.h"
-import Module ( Module, mkBasePkgModule, mkHomeModule, mkModuleName )
+import Module ( Module, mkModule )
import OccName ( dataName, tcName, clsName, varName, mkOccFS
)
-import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc )
+import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
import Unique ( Unique, Uniquable(..), hasKey,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
mkPreludeTyConUnique, mkPreludeClassUnique,
- mkTupleTyConUnique, isTupleKey
+ mkTupleTyConUnique
)
import BasicTypes ( Boxity(..), Arity )
-import Name ( Name, mkInternalName, mkExternalName, nameUnique, nameModule )
+import Name ( Name, mkInternalName, mkExternalName, nameModule )
import SrcLoc ( noSrcLoc )
import FastString
-
-
\end{code}
%************************************************************************
%* *
-\subsection{Built-in-syntax names
-%* *
-%************************************************************************
-
-Built-in syntax names are parsed directly into Exact RdrNames.
-This predicate just identifies them.
-
-\begin{code}
-isBuiltInSyntaxName :: Name -> Bool
-isBuiltInSyntaxName n
- = isTupleKey uniq
- || uniq `elem` [listTyConKey, nilDataConKey, consDataConKey,
- funTyConKey, parrTyConKey]
- where
- uniq = nameUnique n
-\end{code}
-
-%************************************************************************
-%* *
\subsection{Known key Names}
%* *
%************************************************************************
basicKnownKeyNames :: [Name]
basicKnownKeyNames
= genericTyConNames
- ++ monadNames
+ ++ typeableClassNames
++ [ -- Type constructors (synonyms especially)
ioTyConName, ioDataConName,
- runIOName,
+ runMainIOName,
orderingTyConName,
rationalTyConName,
ratioDataConName,
realFracClassName, -- numeric
realFloatClassName, -- numeric
dataClassName,
- typeableClassName,
-- Numeric stuff
negateName, minusName,
-- Monad stuff
thenIOName, bindIOName, returnIOName, failIOName,
+ failMName, bindMName, thenMName, returnMName,
-- MonadRec stuff
mfixName,
otherwiseIdName,
plusIntegerName, timesIntegerName,
eqStringName, assertName, assertErrorName, runSTRepName,
- printName, splitName, fstName, sndName,
+ printName, fstName, sndName,
+
+ -- MonadFix
+ monadFixClassName, mfixName,
+
+ -- Splittable class
+ splittableClassName, splitName,
+
+ -- Other classes
+ randomClassName, randomGenClassName, monadPlusClassName,
-- Booleans
andName, orName
, marshalStringName, unmarshalStringName, checkDotnetResName
]
-monadNames :: [Name] -- The monad ops need by a HsDo
-monadNames = [returnMName, failMName, bindMName, thenMName]
-
genericTyConNames :: [Name]
genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
\end{code}
--MetaHaskell Extension Add a new module here
\begin{code}
-pRELUDE_Name = mkModuleName "Prelude"
-gHC_PRIM_Name = mkModuleName "GHC.Prim" -- Primitive types and values
-pREL_BASE_Name = mkModuleName "GHC.Base"
-pREL_ENUM_Name = mkModuleName "GHC.Enum"
-pREL_SHOW_Name = mkModuleName "GHC.Show"
-pREL_READ_Name = mkModuleName "GHC.Read"
-pREL_NUM_Name = mkModuleName "GHC.Num"
-pREL_LIST_Name = mkModuleName "GHC.List"
-pREL_PARR_Name = mkModuleName "GHC.PArr"
-pREL_TUP_Name = mkModuleName "Data.Tuple"
-pREL_EITHER_Name = mkModuleName "Data.Either"
-pREL_PACK_Name = mkModuleName "GHC.Pack"
-pREL_CONC_Name = mkModuleName "GHC.Conc"
-pREL_IO_BASE_Name = mkModuleName "GHC.IOBase"
-pREL_ST_Name = mkModuleName "GHC.ST"
-pREL_ARR_Name = mkModuleName "GHC.Arr"
-pREL_BYTEARR_Name = mkModuleName "PrelByteArr"
-pREL_STABLE_Name = mkModuleName "GHC.Stable"
-pREL_ADDR_Name = mkModuleName "GHC.Addr"
-pREL_PTR_Name = mkModuleName "GHC.Ptr"
-pREL_ERR_Name = mkModuleName "GHC.Err"
-pREL_REAL_Name = mkModuleName "GHC.Real"
-pREL_FLOAT_Name = mkModuleName "GHC.Float"
-pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
-sYSTEM_IO_Name = mkModuleName "System.IO"
-dYNAMIC_Name = mkModuleName "Data.Dynamic"
-tYPEABLE_Name = mkModuleName "Data.Typeable"
-gENERICS_Name = mkModuleName "Data.Generics.Basics"
-dOTNET_Name = mkModuleName "GHC.Dotnet"
-
-rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
-lEX_Name = mkModuleName "Text.Read.Lex"
-
-mAIN_Name = mkModuleName "Main"
-pREL_INT_Name = mkModuleName "GHC.Int"
-pREL_WORD_Name = mkModuleName "GHC.Word"
-mONAD_FIX_Name = mkModuleName "Control.Monad.Fix"
-aRROW_Name = mkModuleName "Control.Arrow"
-aDDR_Name = mkModuleName "Addr"
-
-gLA_EXTS_Name = mkModuleName "GHC.Exts"
-
-gHC_PRIM = mkBasePkgModule gHC_PRIM_Name
-pREL_BASE = mkBasePkgModule pREL_BASE_Name
-pREL_TUP = mkBasePkgModule pREL_TUP_Name
-pREL_EITHER = mkBasePkgModule pREL_EITHER_Name
-pREL_LIST = mkBasePkgModule pREL_LIST_Name
-pREL_SHOW = mkBasePkgModule pREL_SHOW_Name
-pREL_READ = mkBasePkgModule pREL_READ_Name
-pREL_ADDR = mkBasePkgModule pREL_ADDR_Name
-pREL_WORD = mkBasePkgModule pREL_WORD_Name
-pREL_INT = mkBasePkgModule pREL_INT_Name
-pREL_PTR = mkBasePkgModule pREL_PTR_Name
-pREL_ST = mkBasePkgModule pREL_ST_Name
-pREL_STABLE = mkBasePkgModule pREL_STABLE_Name
-pREL_IO_BASE = mkBasePkgModule pREL_IO_BASE_Name
-pREL_PACK = mkBasePkgModule pREL_PACK_Name
-pREL_ERR = mkBasePkgModule pREL_ERR_Name
-pREL_NUM = mkBasePkgModule pREL_NUM_Name
-pREL_ENUM = mkBasePkgModule pREL_ENUM_Name
-pREL_REAL = mkBasePkgModule pREL_REAL_Name
-pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
-pREL_ARR = mkBasePkgModule pREL_ARR_Name
-pREL_PARR = mkBasePkgModule pREL_PARR_Name
-pREL_BYTEARR = mkBasePkgModule pREL_BYTEARR_Name
-pREL_TOP_HANDLER= mkBasePkgModule pREL_TOP_HANDLER_Name
-pRELUDE = mkBasePkgModule pRELUDE_Name
-sYSTEM_IO = mkBasePkgModule sYSTEM_IO_Name
-aDDR = mkBasePkgModule aDDR_Name
-aRROW = mkBasePkgModule aRROW_Name
-gENERICS = mkBasePkgModule gENERICS_Name
-tYPEABLE = mkBasePkgModule tYPEABLE_Name
-dOTNET = mkBasePkgModule dOTNET_Name
-gLA_EXTS = mkBasePkgModule gLA_EXTS_Name
-mONAD_FIX = mkBasePkgModule mONAD_FIX_Name
-
-rOOT_MAIN_Name = mkModuleName ":Main" -- Root module for initialisation
-rOOT_MAIN = mkHomeModule rOOT_MAIN_Name
- -- The ':xxx' makes a moudle name that the user can never
+pRELUDE = mkModule "Prelude"
+gHC_PRIM = mkModule "GHC.Prim" -- Primitive types and values
+pREL_BASE = mkModule "GHC.Base"
+pREL_ENUM = mkModule "GHC.Enum"
+pREL_SHOW = mkModule "GHC.Show"
+pREL_READ = mkModule "GHC.Read"
+pREL_NUM = mkModule "GHC.Num"
+pREL_LIST = mkModule "GHC.List"
+pREL_PARR = mkModule "GHC.PArr"
+pREL_TUP = mkModule "Data.Tuple"
+pREL_EITHER = mkModule "Data.Either"
+pREL_PACK = mkModule "GHC.Pack"
+pREL_CONC = mkModule "GHC.Conc"
+pREL_IO_BASE = mkModule "GHC.IOBase"
+pREL_ST = mkModule "GHC.ST"
+pREL_ARR = mkModule "GHC.Arr"
+pREL_BYTEARR = mkModule "PrelByteArr"
+pREL_STABLE = mkModule "GHC.Stable"
+pREL_ADDR = mkModule "GHC.Addr"
+pREL_PTR = mkModule "GHC.Ptr"
+pREL_ERR = mkModule "GHC.Err"
+pREL_REAL = mkModule "GHC.Real"
+pREL_FLOAT = mkModule "GHC.Float"
+pREL_TOP_HANDLER= mkModule "GHC.TopHandler"
+sYSTEM_IO = mkModule "System.IO"
+dYNAMIC = mkModule "Data.Dynamic"
+tYPEABLE = mkModule "Data.Typeable"
+gENERICS = mkModule "Data.Generics.Basics"
+dOTNET = mkModule "GHC.Dotnet"
+
+rEAD_PREC = mkModule "Text.ParserCombinators.ReadPrec"
+lEX = mkModule "Text.Read.Lex"
+
+mAIN = mkModule "Main"
+pREL_INT = mkModule "GHC.Int"
+pREL_WORD = mkModule "GHC.Word"
+mONAD = mkModule "Control.Monad"
+mONAD_FIX = mkModule "Control.Monad.Fix"
+aRROW = mkModule "Control.Arrow"
+aDDR = mkModule "Addr"
+rANDOM = mkModule "System.Random"
+
+gLA_EXTS = mkModule "GHC.Exts"
+rOOT_MAIN = mkModule ":Main" -- Root module for initialisation
+ -- The ':xxx' makes a module name that the user can never
-- use himself. The z-encoding for ':' is "ZC", so the z-encoded
-- module name still starts with a capital letter, which keeps
-- the z-encoded version consistent.
-iNTERACTIVE = mkHomeModule (mkModuleName ":Interactive")
+
+iNTERACTIVE = mkModule ":Interactive"
+thFAKE = mkModule ":THFake"
\end{code}
%************************************************************************
%************************************************************************
\begin{code}
+main_RDR_Unqual = mkUnqual varName FSLIT("main")
+ -- We definitely don't want an Orig RdrName, because
+ -- main might, in principle, be imported into module Main
+
eq_RDR = nameRdrName eqName
ge_RDR = nameRdrName geName
-ne_RDR = varQual_RDR pREL_BASE_Name FSLIT("/=")
-le_RDR = varQual_RDR pREL_BASE_Name FSLIT("<=")
-gt_RDR = varQual_RDR pREL_BASE_Name FSLIT(">")
-compare_RDR = varQual_RDR pREL_BASE_Name FSLIT("compare")
-ltTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("LT")
-eqTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("EQ")
-gtTag_RDR = dataQual_RDR pREL_BASE_Name FSLIT("GT")
+ne_RDR = varQual_RDR pREL_BASE FSLIT("/=")
+le_RDR = varQual_RDR pREL_BASE FSLIT("<=")
+gt_RDR = varQual_RDR pREL_BASE FSLIT(">")
+compare_RDR = varQual_RDR pREL_BASE FSLIT("compare")
+ltTag_RDR = dataQual_RDR pREL_BASE FSLIT("LT")
+eqTag_RDR = dataQual_RDR pREL_BASE FSLIT("EQ")
+gtTag_RDR = dataQual_RDR pREL_BASE FSLIT("GT")
eqClass_RDR = nameRdrName eqClassName
numClass_RDR = nameRdrName numClassName
enumClass_RDR = nameRdrName enumClassName
monadClass_RDR = nameRdrName monadClassName
-map_RDR = varQual_RDR pREL_BASE_Name FSLIT("map")
-append_RDR = varQual_RDR pREL_BASE_Name FSLIT("++")
+map_RDR = varQual_RDR pREL_BASE FSLIT("map")
+append_RDR = varQual_RDR pREL_BASE FSLIT("++")
foldr_RDR = nameRdrName foldrName
build_RDR = nameRdrName buildName
left_RDR = nameRdrName leftDataConName
right_RDR = nameRdrName rightDataConName
-fromEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("fromEnum")
-toEnum_RDR = varQual_RDR pREL_ENUM_Name FSLIT("toEnum")
+fromEnum_RDR = varQual_RDR pREL_ENUM FSLIT("fromEnum")
+toEnum_RDR = varQual_RDR pREL_ENUM FSLIT("toEnum")
enumFrom_RDR = nameRdrName enumFromName
enumFromTo_RDR = nameRdrName enumFromToName
unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
newStablePtr_RDR = nameRdrName newStablePtrName
-addrDataCon_RDR = dataQual_RDR aDDR_Name FSLIT("A#")
-wordDataCon_RDR = dataQual_RDR pREL_WORD_Name FSLIT("W#")
+addrDataCon_RDR = dataQual_RDR aDDR FSLIT("A#")
+wordDataCon_RDR = dataQual_RDR pREL_WORD FSLIT("W#")
bindIO_RDR = nameRdrName bindIOName
returnIO_RDR = nameRdrName returnIOName
fromInteger_RDR = nameRdrName fromIntegerName
fromRational_RDR = nameRdrName fromRationalName
minus_RDR = nameRdrName minusName
-times_RDR = varQual_RDR pREL_NUM_Name FSLIT("*")
-plus_RDR = varQual_RDR pREL_NUM_Name FSLIT("+")
-
-compose_RDR = varQual_RDR pREL_BASE_Name FSLIT(".")
-
-not_RDR = varQual_RDR pREL_BASE_Name FSLIT("not")
-getTag_RDR = varQual_RDR pREL_BASE_Name FSLIT("getTag")
-succ_RDR = varQual_RDR pREL_ENUM_Name FSLIT("succ")
-pred_RDR = varQual_RDR pREL_ENUM_Name FSLIT("pred")
-minBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
-maxBound_RDR = varQual_RDR pREL_ENUM_Name FSLIT("maxBound")
-range_RDR = varQual_RDR pREL_ARR_Name FSLIT("range")
-inRange_RDR = varQual_RDR pREL_ARR_Name FSLIT("inRange")
-index_RDR = varQual_RDR pREL_ARR_Name FSLIT("index")
-
-readList_RDR = varQual_RDR pREL_READ_Name FSLIT("readList")
-readListDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListDefault")
-readListPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrec")
-readListPrecDefault_RDR = varQual_RDR pREL_READ_Name FSLIT("readListPrecDefault")
-readPrec_RDR = varQual_RDR pREL_READ_Name FSLIT("readPrec")
-parens_RDR = varQual_RDR pREL_READ_Name FSLIT("parens")
-choose_RDR = varQual_RDR pREL_READ_Name FSLIT("choose")
-lexP_RDR = varQual_RDR pREL_READ_Name FSLIT("lexP")
-
-punc_RDR = dataQual_RDR lEX_Name FSLIT("Punc")
-ident_RDR = dataQual_RDR lEX_Name FSLIT("Ident")
-symbol_RDR = dataQual_RDR lEX_Name FSLIT("Symbol")
-
-step_RDR = varQual_RDR rEAD_PREC_Name FSLIT("step")
-alt_RDR = varQual_RDR rEAD_PREC_Name FSLIT("+++")
-reset_RDR = varQual_RDR rEAD_PREC_Name FSLIT("reset")
-prec_RDR = varQual_RDR rEAD_PREC_Name FSLIT("prec")
-
-showList_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList")
-showList___RDR = varQual_RDR pREL_SHOW_Name FSLIT("showList__")
-showsPrec_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
-showString_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showString")
-showSpace_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showSpace")
-showParen_RDR = varQual_RDR pREL_SHOW_Name FSLIT("showParen")
-
-typeOf_RDR = varQual_RDR tYPEABLE_Name FSLIT("typeOf")
-mkTypeRep_RDR = varQual_RDR tYPEABLE_Name FSLIT("mkAppTy")
-mkTyConRep_RDR = varQual_RDR tYPEABLE_Name FSLIT("mkTyCon")
-
-undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
-
-crossDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT(":*:")
-inlDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("Inl")
-inrDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("Inr")
-genUnitDataCon_RDR = dataQual_RDR pREL_BASE_Name FSLIT("Unit")
+times_RDR = varQual_RDR pREL_NUM FSLIT("*")
+plus_RDR = varQual_RDR pREL_NUM FSLIT("+")
+
+compose_RDR = varQual_RDR pREL_BASE FSLIT(".")
+
+not_RDR = varQual_RDR pREL_BASE FSLIT("not")
+getTag_RDR = varQual_RDR pREL_BASE FSLIT("getTag")
+succ_RDR = varQual_RDR pREL_ENUM FSLIT("succ")
+pred_RDR = varQual_RDR pREL_ENUM FSLIT("pred")
+minBound_RDR = varQual_RDR pREL_ENUM FSLIT("minBound")
+maxBound_RDR = varQual_RDR pREL_ENUM FSLIT("maxBound")
+range_RDR = varQual_RDR pREL_ARR FSLIT("range")
+inRange_RDR = varQual_RDR pREL_ARR FSLIT("inRange")
+index_RDR = varQual_RDR pREL_ARR FSLIT("index")
+unsafeIndex_RDR = varQual_RDR pREL_ARR FSLIT("unsafeIndex")
+unsafeRangeSize_RDR = varQual_RDR pREL_ARR FSLIT("unsafeRangeSize")
+
+readList_RDR = varQual_RDR pREL_READ FSLIT("readList")
+readListDefault_RDR = varQual_RDR pREL_READ FSLIT("readListDefault")
+readListPrec_RDR = varQual_RDR pREL_READ FSLIT("readListPrec")
+readListPrecDefault_RDR = varQual_RDR pREL_READ FSLIT("readListPrecDefault")
+readPrec_RDR = varQual_RDR pREL_READ FSLIT("readPrec")
+parens_RDR = varQual_RDR pREL_READ FSLIT("parens")
+choose_RDR = varQual_RDR pREL_READ FSLIT("choose")
+lexP_RDR = varQual_RDR pREL_READ FSLIT("lexP")
+
+punc_RDR = dataQual_RDR lEX FSLIT("Punc")
+ident_RDR = dataQual_RDR lEX FSLIT("Ident")
+symbol_RDR = dataQual_RDR lEX FSLIT("Symbol")
+
+step_RDR = varQual_RDR rEAD_PREC FSLIT("step")
+alt_RDR = varQual_RDR rEAD_PREC FSLIT("+++")
+reset_RDR = varQual_RDR rEAD_PREC FSLIT("reset")
+prec_RDR = varQual_RDR rEAD_PREC FSLIT("prec")
+
+showList_RDR = varQual_RDR pREL_SHOW FSLIT("showList")
+showList___RDR = varQual_RDR pREL_SHOW FSLIT("showList__")
+showsPrec_RDR = varQual_RDR pREL_SHOW FSLIT("showsPrec")
+showString_RDR = varQual_RDR pREL_SHOW FSLIT("showString")
+showSpace_RDR = varQual_RDR pREL_SHOW FSLIT("showSpace")
+showParen_RDR = varQual_RDR pREL_SHOW FSLIT("showParen")
+
+typeOf_RDR = varQual_RDR tYPEABLE FSLIT("typeOf")
+mkTypeRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyConApp")
+mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon")
+
+undefined_RDR = varQual_RDR pREL_ERR FSLIT("undefined")
+
+crossDataCon_RDR = dataQual_RDR pREL_BASE FSLIT(":*:")
+inlDataCon_RDR = dataQual_RDR pREL_BASE FSLIT("Inl")
+inrDataCon_RDR = dataQual_RDR pREL_BASE FSLIT("Inr")
+genUnitDataCon_RDR = dataQual_RDR pREL_BASE FSLIT("Unit")
----------------------
varQual_RDR mod str = mkOrig mod (mkOccFS varName str)
\begin{code}
-rootMainName = varQual rOOT_MAIN FSLIT("main") rootMainKey
-runIOName = varQual pREL_TOP_HANDLER FSLIT("runIO") runMainKey
+runMainIOName = varQual pREL_TOP_HANDLER FSLIT("runMainIO") runMainKey
orderingTyConName = tcQual pREL_BASE FSLIT("Ordering") orderingTyConKey
eqStringName = varQual pREL_BASE FSLIT("eqString") eqStringIdKey
-- Base classes (Eq, Ord, Functor)
-eqClassName = clsQual pREL_BASE FSLIT("Eq") eqClassKey
-eqName = methName eqClassName FSLIT("==") eqClassOpKey
-ordClassName = clsQual pREL_BASE FSLIT("Ord") ordClassKey
-geName = methName ordClassName FSLIT(">=") geClassOpKey
+eqClassName = clsQual pREL_BASE FSLIT("Eq") eqClassKey
+eqName = methName eqClassName FSLIT("==") eqClassOpKey
+ordClassName = clsQual pREL_BASE FSLIT("Ord") ordClassKey
+geName = methName ordClassName FSLIT(">=") geClassOpKey
functorClassName = clsQual pREL_BASE FSLIT("Functor") functorClassKey
-- Class Monad
-monadClassName = clsQual pREL_BASE FSLIT("Monad") monadClassKey
-thenMName = methName monadClassName FSLIT(">>") thenMClassOpKey
-bindMName = methName monadClassName FSLIT(">>=") bindMClassOpKey
+monadClassName = clsQual pREL_BASE FSLIT("Monad") monadClassKey
+thenMName = methName monadClassName FSLIT(">>") thenMClassOpKey
+bindMName = methName monadClassName FSLIT(">>=") bindMClassOpKey
returnMName = methName monadClassName FSLIT("return") returnMClassOpKey
-failMName = methName monadClassName FSLIT("fail") failMClassOpKey
+failMName = methName monadClassName FSLIT("fail") failMClassOpKey
-- Random PrelBase functions
otherwiseIdName = varQual pREL_BASE FSLIT("otherwise") otherwiseIdKey
buildName = varQual pREL_BASE FSLIT("build") buildIdKey
augmentName = varQual pREL_BASE FSLIT("augment") augmentIdKey
appendName = varQual pREL_BASE FSLIT("++") appendIdKey
-andName = varQual pREL_BASE FSLIT("&&") andIdKey
-orName = varQual pREL_BASE FSLIT("||") orIdKey
+andName = varQual pREL_BASE FSLIT("&&") andIdKey
+orName = varQual pREL_BASE FSLIT("||") orIdKey
assertName = varQual pREL_BASE FSLIT("assert") assertIdKey
-- PrelTup
realFloatClassName = clsQual pREL_FLOAT FSLIT("RealFloat") realFloatClassKey
-- Class Ix
-ixClassName = clsQual pREL_ARR FSLIT("Ix") ixClassKey
+ixClassName = clsQual pREL_ARR FSLIT("Ix") ixClassKey
+
+-- Class Typeable
+typeableClassName = clsQual tYPEABLE FSLIT("Typeable") typeableClassKey
+typeable1ClassName = clsQual tYPEABLE FSLIT("Typeable1") typeable1ClassKey
+typeable2ClassName = clsQual tYPEABLE FSLIT("Typeable2") typeable2ClassKey
+typeable3ClassName = clsQual tYPEABLE FSLIT("Typeable3") typeable3ClassKey
+typeable4ClassName = clsQual tYPEABLE FSLIT("Typeable4") typeable4ClassKey
+typeable5ClassName = clsQual tYPEABLE FSLIT("Typeable5") typeable5ClassKey
+typeable6ClassName = clsQual tYPEABLE FSLIT("Typeable6") typeable6ClassKey
+typeable7ClassName = clsQual tYPEABLE FSLIT("Typeable7") typeable7ClassKey
+
+typeableClassNames = [ typeableClassName, typeable1ClassName, typeable2ClassName
+ , typeable3ClassName, typeable4ClassName, typeable5ClassName
+ , typeable6ClassName, typeable7ClassName ]
--- Class Typeable and Data
-typeableClassName = clsQual tYPEABLE FSLIT("Typeable") typeableClassKey
-dataClassName = clsQual gENERICS FSLIT("Data") dataClassKey
+-- Class Data
+dataClassName = clsQual gENERICS FSLIT("Data") dataClassKey
-- Error module
assertErrorName = varQual pREL_ERR FSLIT("assertError") assertErrorIdKey
runSTRepName = varQual pREL_ST FSLIT("runSTRep") runSTRepIdKey
-- The "split" Id for splittable implicit parameters
-splitName = varQual gLA_EXTS FSLIT("split") splitIdKey
+splittableClassName = clsQual gLA_EXTS FSLIT("Splittable") splittableClassKey
+splitName = methName splittableClassName FSLIT("split") splitIdKey
-- Recursive-do notation
-mfixName = varQual mONAD_FIX FSLIT("mfix") mfixIdKey
+monadFixClassName = clsQual mONAD_FIX FSLIT("MonadFix") monadFixClassKey
+mfixName = methName monadFixClassName FSLIT("mfix") mfixIdKey
-- Arrow notation
-arrAName = varQual aRROW FSLIT("arr") arrAIdKey
-composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
-firstAName = varQual aRROW FSLIT("first") firstAIdKey
-appAName = varQual aRROW FSLIT("app") appAIdKey
-choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
-loopAName = varQual aRROW FSLIT("loop") loopAIdKey
+arrAName = varQual aRROW FSLIT("arr") arrAIdKey
+composeAName = varQual aRROW FSLIT(">>>") composeAIdKey
+firstAName = varQual aRROW FSLIT("first") firstAIdKey
+appAName = varQual aRROW FSLIT("app") appAIdKey
+choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey
+loopAName = varQual aRROW FSLIT("loop") loopAIdKey
+
+-- Other classes, needed for type defaulting
+monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey
+randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey
+randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
-- dotnet interop
objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey
boundedClassKey = mkPreludeClassUnique 1
enumClassKey = mkPreludeClassUnique 2
eqClassKey = mkPreludeClassUnique 3
-typeableClassKey = mkPreludeClassUnique 4
floatingClassKey = mkPreludeClassUnique 5
fractionalClassKey = mkPreludeClassUnique 6
integralClassKey = mkPreludeClassUnique 7
realFloatClassKey = mkPreludeClassUnique 15
realFracClassKey = mkPreludeClassUnique 16
showClassKey = mkPreludeClassUnique 17
-ixClassKey = mkPreludeClassUnique 20
+ixClassKey = mkPreludeClassUnique 18
+
+typeableClassKey = mkPreludeClassUnique 20
+typeable1ClassKey = mkPreludeClassUnique 21
+typeable2ClassKey = mkPreludeClassUnique 22
+typeable3ClassKey = mkPreludeClassUnique 23
+typeable4ClassKey = mkPreludeClassUnique 24
+typeable5ClassKey = mkPreludeClassUnique 25
+typeable6ClassKey = mkPreludeClassUnique 26
+typeable7ClassKey = mkPreludeClassUnique 27
+
+monadFixClassKey = mkPreludeClassUnique 28
+splittableClassKey = mkPreludeClassUnique 29
+
+monadPlusClassKey = mkPreludeClassUnique 30
+randomClassKey = mkPreludeClassUnique 31
+randomGenClassKey = mkPreludeClassUnique 32
\end{code}
%************************************************************************
bcoPrimTyConKey = mkPreludeTyConUnique 73
ptrTyConKey = mkPreludeTyConUnique 74
funPtrTyConKey = mkPreludeTyConUnique 75
+tVarPrimTyConKey = mkPreludeTyConUnique 76
-- Generic Type Constructors
crossTyConKey = mkPreludeTyConUnique 79
eitherTyConKey = mkPreludeTyConUnique 84
---------------- Template Haskell -------------------
--- USES TyConUniques 100-119
+-- USES TyConUniques 100-129
-----------------------------------------------------
unitTyConKey = mkTupleTyConUnique Boxed 0
composeAIdKey = mkPreludeMiscIdUnique 120 -- >>>
firstAIdKey = mkPreludeMiscIdUnique 121
appAIdKey = mkPreludeMiscIdUnique 122
-choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
+choiceAIdKey = mkPreludeMiscIdUnique 123 -- |||
loopAIdKey = mkPreludeMiscIdUnique 124
---------------- Template Haskell -------------------
--- USES IdUniques 200-299
+-- USES IdUniques 200-399
-----------------------------------------------------
\end{code}
[ readClassKey
]
+-- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
+-- and are: "classes defined in the Prelude or a standard library"
standardClassKeys = derivableClassKeys ++ numericClassKeys
+ ++ [randomClassKey, randomGenClassKey,
+ functorClassKey,
+ monadClassKey, monadPlusClassKey]
noDictClassKeys = [] -- ToDo: remove?
\end{code}