module Env.Instance
( InstIdent, ppInstIdent, InstInfo
, InstEnv, initInstEnv, bindInstInfo, removeInstInfo, lookupInstInfo
) where
import qualified Data.Map as Map (Map, empty, insert, delete, lookup)
import Curry.Base.Ident
import Curry.Base.Pretty
import Curry.Syntax.Pretty
import Base.Types
type InstIdent = (QualIdent, QualIdent)
ppInstIdent :: InstIdent -> Doc
ppInstIdent (qcls, qtc) = ppQIdent qcls <+> ppQIdent qtc
type InstInfo = (ModuleIdent, PredSet, [(Ident, Int)])
type InstEnv = Map.Map InstIdent InstInfo
initInstEnv :: InstEnv
initInstEnv = Map.empty
bindInstInfo :: InstIdent -> InstInfo -> InstEnv -> InstEnv
bindInstInfo = Map.insert
removeInstInfo :: InstIdent -> InstEnv -> InstEnv
removeInstInfo = Map.delete
lookupInstInfo :: InstIdent -> InstEnv -> Maybe InstInfo
lookupInstInfo = Map.lookup