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