Safe Haskell | None |
---|
TcSMonad
Documentation
data WorkList
Instances
isEmptyWorkList :: WorkList -> Bool
workListFromEq :: Ct -> WorkList
workListFromNonEq :: Ct -> WorkList
workListFromCt :: Ct -> WorkList
extendWorkListEq :: Ct -> WorkList -> WorkList
extendWorkListNonEq :: Ct -> WorkList -> WorkList
extendWorkListCt :: Ct -> WorkList -> WorkList
appendWorkListCt :: [Ct] -> WorkList -> WorkList
appendWorkListEqs :: [Ct] -> WorkList -> WorkList
unionWorkList :: WorkList -> WorkList -> WorkList
selectWorkItem :: WorkList -> (Maybe Ct, WorkList)
updWorkListTcS :: (WorkList -> WorkList) -> TcS ()
updWorkListTcS_return :: (WorkList -> (a, WorkList)) -> TcS a
keepWanted :: Cts -> Cts
tyVarsOfCt :: Ct -> TcTyVarSet
tyVarsOfCts :: Cts -> TcTyVarSet
tyVarsOfCDicts :: Cts -> TcTyVarSet
emitFrozenError :: CtFlavor -> EvVar -> SubGoalDepth -> TcS ()
isGivenOrSolved :: CtFlavor -> Bool
isGivenOrSolvedCt :: Ct -> Bool
isGivenCt_maybe :: Ct -> Maybe GivenKind
isWantedCt :: Ct -> Bool
isDerivedCt :: Ct -> Bool
pprFlavorArising :: CtFlavor -> SDoc
isFlexiTcsTv :: TyVar -> Bool
canRewrite :: CtFlavor -> CtFlavor -> Bool
combineCtLoc :: CtFlavor -> CtFlavor -> WantedLoc
mkSolvedFlavor :: CtFlavor -> SkolemInfo -> EvTerm -> CtFlavor
mkGivenFlavor :: CtFlavor -> SkolemInfo -> CtFlavor
mkWantedFlavor :: CtFlavor -> CtFlavor
getWantedLoc :: Ct -> WantedLoc
runTcS :: SimplContext -> Untouchables -> InertSet -> WorkList -> TcS a -> TcM (a, Bag EvBind)
traceFireTcS :: SubGoalDepth -> SDoc -> TcS ()
bumpStepCountTcS :: TcS ()
doWithInert :: InertSet -> TcS a -> TcS a
nestImplicTcS :: EvBindsVar -> TcsUntouchables -> TcS a -> TcS a
recoverTcS :: TcS a -> TcS a -> TcS a
wrapErrTcS :: TcM a -> TcS a
wrapWarnTcS :: TcM a -> TcS a
data SimplContext
Constructors
SimplInfer SDoc | |
SimplRuleLhs RuleName | |
SimplInteractive | |
SimplCheck SDoc |
Instances
isInteractive :: SimplContext -> Bool
simplEqsOnly :: SimplContext -> Bool
newEvVar :: CtFlavor -> TcPredType -> TcS EvVarCreated
forceNewEvVar :: CtFlavor -> TcPredType -> TcS EvVar
delCachedEvVar :: EvVar -> CtFlavor -> TcS ()
updateFlatCache :: EvVar -> CtFlavor -> TyCon -> [Xi] -> TcType -> FlatEqOrigin -> TcS ()
flushFlatCache :: TcS ()
newGivenEqVar :: CtFlavor -> TcType -> TcType -> TcCoercion -> TcS (CtFlavor, EvVar)
newKindConstraint :: TcTyVar -> Kind -> CtFlavor -> TcS EvVarCreated
data EvVarCreated
Constructors
EvVarCreated | |
Fields
|
isNewEvVar :: EvVarCreated -> Bool
data FlatEqOrigin
Constructors
WhileFlattening | |
WhenSolved | |
Any |
origin_matches :: FlatEqOrigin -> FlatEqOrigin -> Bool
setWantedTyBind :: TcTyVar -> TcType -> TcS ()
getInstEnvs :: TcS (InstEnv, InstEnv)
getTcSTyBindsMap :: TcS (TyVarEnv (TcTyVar, TcType))
getTcSEvVarCacheMap :: TcS (TypeMap (EvVar, CtFlavor))
getTcSEvVarFlatCache :: TcS (TypeMap (TcCoercion, (Type, CtFlavor, FlatEqOrigin)))
setTcSEvVarCacheMap :: TypeMap (EvVar, CtFlavor) -> TcS ()
pprEvVarCache :: TypeMap (TcCoercion, a) -> SDoc
newFlattenSkolemTy :: TcType -> TcS TcType
data InertSet
Constructors
IS | |
Fields
|
Instances
getInertEqs :: TcS (TyVarEnv (Ct, TcCoercion), InScopeSet)
liftInertEqsTy :: (TyVarEnv (Ct, TcCoercion), InScopeSet) -> CtFlavor -> PredType -> TcCoercion
getCtCoercion :: Ct -> TcCoercion
updInertSet :: InertSet -> AtomicInert -> InertSet
extractUnsolved :: InertSet -> ((Cts, Cts), InertSet)
extractUnsolvedTcS :: TcS (Cts, Cts)
modifyInertTcS :: (InertSet -> (a, InertSet)) -> TcS a
updInertSetTcS :: AtomicInert -> TcS ()
partitionEqMap :: (Ct -> Bool) -> TyVarEnv (Ct, TcCoercion) -> ([Ct], TyVarEnv (Ct, TcCoercion))
getRelevantCts :: Uniquable a => a -> CCanMap a -> (Cts, CCanMap a)
extractRelevantInerts :: Ct -> TcS Cts
data CCanMap a
Constructors
CCanMap | |
Fields
|
pprCtTypeMap :: TypeMap Ct -> SDoc
mkPredKeyForTypeMap :: Ct -> PredType
instDFunConstraints :: TcThetaType -> CtFlavor -> TcS [EvVarCreated]
newFlexiTcSTy :: Kind -> TcS TcType
instFlexiTcS :: TyVar -> TcS TcTyVar
compatKind :: Kind -> Kind -> Bool
compatKindTcS :: Kind -> Kind -> TcS Bool
isSubKindTcS :: Kind -> Kind -> TcS Bool
type TcsUntouchables = (Untouchables, TcTyVarSet)
isTouchableMetaTyVar :: TcTyVar -> TcS Bool
getDefaultInfo :: TcS (SimplContext, [Type], (Bool, Bool))
matchClass :: Class -> [Type] -> TcS (MatchInstResult (DFunId, [Either TyVar TcType]))
data MatchInstResult mi
Constructors
MatchInstNo | |
MatchInstSingle mi | |
MatchInstMany |
checkWellStagedDFun :: PredType -> DFunId -> WantedLoc -> TcS ()