{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface InstEnv where import BasicLit(BasicLit) import Class(Class, ClassOp) import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr) import CostCentre(CostCentre) import HsBinds(Binds) import HsExpr(ArithSeqInfo, Expr, Qual) import HsLit(Literal) import HsMatches(Match) import HsPat(InPat, TypecheckedPat) import HsTypes(PolyType) import Id(Id) import IdInfo(SpecEnv, SpecInfo) import Inst(Inst, InstOrigin, OverloadedLit) import Maybes(Labda, MaybeErr) import Name(Name) import PreludePS(_PackedString) import PrimOps(PrimOp) import SplitUniq(SplitUniqSupply) import SrcLoc(SrcLoc) import TyCon(TyCon) import TyVar(TyVar, TyVarTemplate) import UniType(UniType) import Unique(Unique) data Class type ClassInstEnv = [(UniType, InstTemplate)] data ClassOp data CoreExpr a b data Expr a b data Id data Inst data InstOrigin data InstTemplate data InstTy type InstanceMapper = Class -> ([(UniType, InstTemplate)], ClassOp -> SpecEnv) data Labda a type MatchEnv a b = [(a, b)] data MaybeErr a b type MethodInstInfo = (Id, [UniType], InstTemplate) data TypecheckedPat data SpecEnv data SpecInfo data SplitUniqSupply data TyCon data TyVarTemplate data UniType addClassInst :: Class -> [(UniType, InstTemplate)] -> UniType -> Id -> [TyVarTemplate] -> [(Class, UniType)] -> SrcLoc -> MaybeErr [(UniType, InstTemplate)] (Class, (UniType, SrcLoc), (UniType, SrcLoc)) lookupClassInstAtSimpleType :: Class -> UniType -> Labda Id lookupInst :: SplitUniqSupply -> Inst -> Labda (Expr Id TypecheckedPat, [Inst]) lookupNoBindInst :: SplitUniqSupply -> Inst -> Labda [Inst] mkInstSpecEnv :: Class -> UniType -> [TyVarTemplate] -> [(Class, UniType)] -> SpecEnv nullMEnv :: [(a, b)]