2e1b648a4bd729fcbd669dbaf18bad2457a64d76
[ghc-hetmet.git] / ghc / compiler / prelude / PrelFuns.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface PrelFuns where
3 import Bag(Bag)
4 import BasicLit(BasicLit)
5 import BinderInfo(BinderInfo)
6 import CharSeq(CSeq)
7 import Class(Class, ClassOp)
8 import CmdLineOpts(GlobalSwitch)
9 import CoreSyn(CoreArg, CoreAtom, CoreBinding, CoreCaseAlternatives, CoreCaseDefault, CoreExpr)
10 import CostCentre(CostCentre)
11 import Id(Id)
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)
16 import Maybes(Labda)
17 import Name(Name(..))
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(..))
26 import SrcLoc(SrcLoc)
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)
31 import UniqFM(UniqFM)
32 import Unique(Unique)
33 class OptIdInfo a where
34         noInfo :: a
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
46         hasType :: a -> Bool
47         getType :: a -> UniType
48         fromPreludeCore :: a -> Bool
49 class Outputable a where
50         ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep
51 data Bag a 
52 data BasicLit 
53 data BinderInfo 
54 data Class 
55 data ClassOp 
56 data GlobalSwitch 
57 data CoreArg a 
58 data CoreAtom a 
59 data CoreBinding a b 
60 data CoreCaseAlternatives a b 
61 data CoreCaseDefault a b 
62 data CoreExpr a b 
63 data CostCentre 
64 data Id 
65 type IdEnv a = UniqFM a
66 data ArgUsage 
67 data ArgUsageInfo 
68 data ArityInfo 
69 data DeforestInfo 
70 data Demand 
71 data DemandInfo 
72 data FBConsum 
73 data FBProd 
74 data FBType 
75 data FBTypeInfo 
76 data IdInfo 
77 data SpecEnv 
78 data StrictnessInfo 
79 data UpdateInfo 
80 data InstTemplate 
81 data Labda 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
83 data FullName 
84 data ShortName 
85 data ExportFlag 
86 type PlainCoreAtom = CoreAtom Id
87 type PlainCoreExpr = CoreExpr Id Id
88 data PprStyle 
89 type Pretty = Int -> Bool -> PrettyRep
90 data PrettyRep 
91 data PrimKind   = PtrKind | CodePtrKind | DataPtrKind | RetKind | InfoPtrKind | CostCentreKind | CharKind | IntKind | WordKind | AddrKind | FloatKind | DoubleKind | MallocPtrKind | StablePtrKind | ArrayKind | ByteArrayKind | VoidKind
92 data PrimOp
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
94 data UnfoldingDetails 
95 data UnfoldingGuidance   = UnfoldNever | UnfoldAlways | EssentialUnfolding | UnfoldIfGoodArgs Int Int [Bool] Int | BadUnfolding
96 data SrcLoc 
97 type Arity = Int
98 data TyCon 
99 data TyVar 
100 data TyVarTemplate 
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
106 data UniqFM a 
107 data Unique 
108 arityMaybe :: ArityInfo -> Labda Int
109 mkArityInfo :: Int -> ArityInfo
110 mkUnfolding :: UnfoldingGuidance -> CoreExpr Id Id -> UnfoldingDetails
111 noIdInfo :: IdInfo
112 noInfo_UF :: UnfoldingDetails
113 nullSpecEnv :: SpecEnv
114 mkPreludeCoreName :: _PackedString -> _PackedString -> FullName
115 alpha_tv :: TyVarTemplate
116 alpha_tyvar :: TyVar
117 beta_tv :: TyVarTemplate
118 beta_tyvar :: TyVar
119 delta_tv :: TyVarTemplate
120 delta_tyvar :: TyVar
121 epsilon_tv :: TyVarTemplate
122 epsilon_tyvar :: TyVar
123 gamma_tv :: TyVarTemplate
124 gamma_tyvar :: TyVar
125 alpha :: UniType
126 alpha_ty :: UniType
127 beta :: UniType
128 beta_ty :: UniType
129 delta :: UniType
130 delta_ty :: UniType
131 epsilon :: UniType
132 epsilon_ty :: UniType
133 gLASGOW_MISC :: _PackedString
134 gLASGOW_ST :: _PackedString
135 gamma :: UniType
136 gamma_ty :: UniType
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
153