{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface Inst where import Class(Class, ClassOp) import HsBinds(Binds) import HsExpr(ArithSeqInfo, Expr, Qual, RenamedArithSeqInfo(..), RenamedExpr(..)) import HsLit(Literal) import HsMatches(Match) import HsPat(InPat, RenamedPat(..)) import HsTypes(PolyType) import Id(Id) import IdInfo(SpecEnv) import InstEnv(ClassInstEnv(..), InstTemplate, InstanceMapper(..), MatchEnv(..)) import Maybes(Labda) import Name(Name) import NameTypes(FullName, ShortName) import Outputable(Outputable) import PreludePS(_PackedString) import PreludeRatio(Ratio(..)) import Pretty(PprStyle, PrettyRep) import PrimKind(PrimKind) import SrcLoc(SrcLoc) import Subst(Subst) import TyCon(TyCon) import TyVar(TyVar, TyVarTemplate) import UniType(UniType) import Unique(Unique) data Class data ClassOp data ArithSeqInfo a b data Expr a b data Inst = Dict Unique Class UniType InstOrigin | Method Unique Id [UniType] InstOrigin | LitInst Unique OverloadedLit UniType InstOrigin data InstOrigin = OccurrenceOf Id SrcLoc | InstanceDeclOrigin SrcLoc | LiteralOrigin Literal SrcLoc | ArithSeqOrigin (ArithSeqInfo Name (InPat Name)) SrcLoc | SignatureOrigin | ClassDeclOrigin SrcLoc | DerivingOrigin (Class -> ([(UniType, InstTemplate)], ClassOp -> SpecEnv)) Class Bool TyCon SrcLoc | InstanceSpecOrigin (Class -> ([(UniType, InstTemplate)], ClassOp -> SpecEnv)) Class UniType SrcLoc | DefaultDeclOrigin SrcLoc | ValSpecOrigin Name SrcLoc | CCallOrigin SrcLoc [Char] (Labda (Expr Name (InPat Name))) | LitLitOrigin SrcLoc [Char] | UnknownOrigin data OverloadedLit = OverloadedIntegral Integer Id Id | OverloadedFractional (Ratio Integer) Id type RenamedArithSeqInfo = ArithSeqInfo Name (InPat Name) type RenamedExpr = Expr Name (InPat Name) data Literal data InPat a type RenamedPat = InPat Name data Id type ClassInstEnv = [(UniType, InstTemplate)] data InstTemplate type InstanceMapper = Class -> ([(UniType, InstTemplate)], ClassOp -> SpecEnv) type MatchEnv a b = [(a, b)] data Name data PrimKind data SrcLoc data Subst data TyCon data TyVar data TyVarTemplate data UniType data Unique applySubstToInst :: Subst -> Inst -> (Subst, Inst) apply_to_Inst :: (UniType -> UniType) -> Inst -> Inst extractConstrainedTyVarsFromInst :: Inst -> [TyVar] extractTyVarsFromInst :: Inst -> [TyVar] getDictClassAndType :: Inst -> (Class, UniType) getInstOrigin :: Inst -> (SrcLoc, PprStyle -> Int -> Bool -> PrettyRep) getInstUniType :: Inst -> UniType instBindingRequired :: Inst -> Bool instCanBeGeneralised :: Inst -> Bool isTyVarDict :: Inst -> Bool matchesInst :: Inst -> Inst -> Bool mkDict :: Unique -> Class -> UniType -> InstOrigin -> Inst mkLitInst :: Unique -> OverloadedLit -> UniType -> InstOrigin -> Inst mkMethod :: Unique -> Id -> [UniType] -> InstOrigin -> Inst instance Outputable Inst