1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface PrelFuns where
4 import BasicLit(BasicLit)
5 import BinderInfo(BinderInfo)
7 import Class(Class, ClassOp)
8 import CmdLineOpts(GlobalSwitch)
9 import CoreSyn(CoreArg, CoreAtom, CoreBinding, CoreCaseAlternatives, CoreCaseDefault, CoreExpr)
10 import CostCentre(CostCentre)
12 import IdEnv(IdEnv(..))
13 import IdInfo(ArgUsage, ArgUsageInfo, ArityInfo, DeforestInfo, Demand, DemandInfo, FBConsum, FBProd, FBType, FBTypeInfo, IdInfo, OptIdInfo(..), SpecEnv, StrictnessInfo, UpdateInfo, arityMaybe, mkArityInfo, mkUnfolding, noIdInfo, noInfo_UF, nullSpecEnv)
14 import InstEnv(InstTemplate)
15 import MagicUFs(MagicUnfoldingFun)
18 import NameTypes(FullName, ShortName, mkPreludeCoreName)
19 import Outputable(ExportFlag, NamedThing(..), Outputable(..))
20 import PlainCore(PlainCoreAtom(..), PlainCoreExpr(..))
21 import PreludePS(_PackedString)
22 import Pretty(Delay, PprStyle, Pretty(..), PrettyRep)
23 import PrimKind(PrimKind(..))
24 import PrimOps(PrimOp(..))
25 import SimplEnv(FormSummary, UnfoldingDetails, UnfoldingGuidance(..))
27 import TyCon(Arity(..), TyCon)
28 import TyVar(TyVar, TyVarTemplate, alpha_tv, alpha_tyvar, beta_tv, beta_tyvar, delta_tv, delta_tyvar, epsilon_tv, epsilon_tyvar, gamma_tv, gamma_tyvar)
29 import TyVarEnv(TyVarEnv(..))
30 import UniType(SigmaType(..), TauType(..), ThetaType(..), UniType(..), alpha, alpha_ty, beta, beta_ty, delta, delta_ty, epsilon, epsilon_ty, gamma, gamma_ty)
33 class OptIdInfo a where
35 getInfo :: IdInfo -> a
36 addInfo :: IdInfo -> a -> IdInfo
37 ppInfo :: PprStyle -> (Id -> Id) -> a -> Int -> Bool -> PrettyRep
38 class NamedThing a where
39 getExportFlag :: a -> ExportFlag
40 isLocallyDefined :: a -> Bool
41 getOrigName :: a -> (_PackedString, _PackedString)
42 getOccurrenceName :: a -> _PackedString
43 getInformingModules :: a -> [_PackedString]
44 getSrcLoc :: a -> SrcLoc
45 getTheUnique :: a -> Unique
47 getType :: a -> UniType
48 fromPreludeCore :: a -> Bool
49 class Outputable a where
50 ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep
60 data CoreCaseAlternatives a b
61 data CoreCaseDefault a b
65 type IdEnv a = UniqFM a
82 data Name = Short Unique ShortName | WiredInTyCon TyCon | WiredInVal Id | PreludeVal Unique FullName | PreludeTyCon Unique FullName Int Bool | PreludeClass Unique FullName | OtherTyCon Unique FullName Int Bool [Name] | OtherClass Unique FullName [Name] | OtherTopId Unique FullName | ClassOpName Unique Name _PackedString Int | Unbound _PackedString
86 type PlainCoreAtom = CoreAtom Id
87 type PlainCoreExpr = CoreExpr Id Id
89 type Pretty = Int -> Bool -> PrettyRep
91 data PrimKind = PtrKind | CodePtrKind | DataPtrKind | RetKind | InfoPtrKind | CostCentreKind | CharKind | IntKind | WordKind | AddrKind | FloatKind | DoubleKind | MallocPtrKind | StablePtrKind | ArrayKind | ByteArrayKind | VoidKind
93 = CharGtOp | CharGeOp | CharEqOp | CharNeOp | CharLtOp | CharLeOp | IntGtOp | IntGeOp | IntEqOp | IntNeOp | IntLtOp | IntLeOp | WordGtOp | WordGeOp | WordEqOp | WordNeOp | WordLtOp | WordLeOp | AddrGtOp | AddrGeOp | AddrEqOp | AddrNeOp | AddrLtOp | AddrLeOp | FloatGtOp | FloatGeOp | FloatEqOp | FloatNeOp | FloatLtOp | FloatLeOp | DoubleGtOp | DoubleGeOp | DoubleEqOp | DoubleNeOp | DoubleLtOp | DoubleLeOp | OrdOp | ChrOp | IntAddOp | IntSubOp | IntMulOp | IntQuotOp | IntDivOp | IntRemOp | IntNegOp | IntAbsOp | AndOp | OrOp | NotOp | SllOp | SraOp | SrlOp | ISllOp | ISraOp | ISrlOp | Int2WordOp | Word2IntOp | Int2AddrOp | Addr2IntOp | FloatAddOp | FloatSubOp | FloatMulOp | FloatDivOp | FloatNegOp | Float2IntOp | Int2FloatOp | FloatExpOp | FloatLogOp | FloatSqrtOp | FloatSinOp | FloatCosOp | FloatTanOp | FloatAsinOp | FloatAcosOp | FloatAtanOp | FloatSinhOp | FloatCoshOp | FloatTanhOp | FloatPowerOp | DoubleAddOp | DoubleSubOp | DoubleMulOp | DoubleDivOp | DoubleNegOp | Double2IntOp | Int2DoubleOp | Double2FloatOp | Float2DoubleOp | DoubleExpOp | DoubleLogOp | DoubleSqrtOp | DoubleSinOp | DoubleCosOp | DoubleTanOp | DoubleAsinOp | DoubleAcosOp | DoubleAtanOp | DoubleSinhOp | DoubleCoshOp | DoubleTanhOp | DoublePowerOp | IntegerAddOp | IntegerSubOp | IntegerMulOp | IntegerQuotRemOp | IntegerDivModOp | IntegerNegOp | IntegerCmpOp | Integer2IntOp | Int2IntegerOp | Word2IntegerOp | Addr2IntegerOp | FloatEncodeOp | FloatDecodeOp | DoubleEncodeOp | DoubleDecodeOp | NewArrayOp | NewByteArrayOp PrimKind | SameMutableArrayOp | SameMutableByteArrayOp | ReadArrayOp | WriteArrayOp | IndexArrayOp | ReadByteArrayOp PrimKind | WriteByteArrayOp PrimKind | IndexByteArrayOp PrimKind | IndexOffAddrOp PrimKind | UnsafeFreezeArrayOp | UnsafeFreezeByteArrayOp | NewSynchVarOp | TakeMVarOp | PutMVarOp | ReadIVarOp | WriteIVarOp | MakeStablePtrOp | DeRefStablePtrOp | CCallOp _PackedString Bool Bool [UniType] UniType | ErrorIOPrimOp | ReallyUnsafePtrEqualityOp | SeqOp | ParOp | ForkOp | DelayOp | WaitOp
95 data UnfoldingGuidance = UnfoldNever | UnfoldAlways | EssentialUnfolding | UnfoldIfGoodArgs Int Int [Bool] Int | BadUnfolding
101 type TyVarEnv a = UniqFM a
102 type SigmaType = UniType
103 type TauType = UniType
104 type ThetaType = [(Class, UniType)]
105 data UniType = UniTyVar TyVar | UniFun UniType UniType | UniData TyCon [UniType] | UniSyn TyCon [UniType] UniType | UniDict Class UniType | UniTyVarTemplate TyVarTemplate | UniForall TyVarTemplate UniType
108 arityMaybe :: ArityInfo -> Labda Int
109 mkArityInfo :: Int -> ArityInfo
110 mkUnfolding :: UnfoldingGuidance -> CoreExpr Id Id -> UnfoldingDetails
112 noInfo_UF :: UnfoldingDetails
113 nullSpecEnv :: SpecEnv
114 mkPreludeCoreName :: _PackedString -> _PackedString -> FullName
115 alpha_tv :: TyVarTemplate
117 beta_tv :: TyVarTemplate
119 delta_tv :: TyVarTemplate
121 epsilon_tv :: TyVarTemplate
122 epsilon_tyvar :: TyVar
123 gamma_tv :: TyVarTemplate
132 epsilon_ty :: UniType
133 gLASGOW_MISC :: _PackedString
134 gLASGOW_ST :: _PackedString
137 pRELUDE :: _PackedString
138 pRELUDE_BUILTIN :: _PackedString
139 pRELUDE_CORE :: _PackedString
140 pRELUDE_IO :: _PackedString
141 pRELUDE_LIST :: _PackedString
142 pRELUDE_PRIMIO :: _PackedString
143 pRELUDE_PS :: _PackedString
144 pRELUDE_RATIO :: _PackedString
145 pRELUDE_TEXT :: _PackedString
146 pcDataCon :: Unique -> _PackedString -> _PackedString -> [TyVarTemplate] -> [(Class, UniType)] -> [UniType] -> TyCon -> SpecEnv -> Id
147 pcDataTyCon :: Unique -> _PackedString -> _PackedString -> [TyVarTemplate] -> [Id] -> TyCon
148 pcGenerateDataSpecs :: UniType -> SpecEnv
149 pcGenerateSpecs :: Unique -> Id -> IdInfo -> UniType -> SpecEnv
150 pcGenerateTupleSpecs :: Int -> UniType -> SpecEnv
151 pcMiscPrelId :: Unique -> _PackedString -> _PackedString -> UniType -> IdInfo -> Id
152 pcPrimTyCon :: Unique -> _PackedString -> Int -> ([PrimKind] -> PrimKind) -> TyCon