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
getTcSImplics :: TcS (Bag Implication)
updTcSImplics :: (Bag Implication -> Bag Implication) -> TcS ()
emitTcSImplication :: Implication -> TcS ()
data Ct
Constructors
CDictCan | |
Fields
| |
CIrredEvCan | |
Fields
| |
CTyEqCan | |
Fields
| |
CFunEqCan | |
Fields
| |
CNonCanonical | |
Fields
|
Instances
tyVarsOfCt :: Ct -> TcTyVarSet
tyVarsOfCts :: Cts -> TcTyVarSet
tyVarsOfCDicts :: Cts -> TcTyVarSet
emitFrozenError :: CtEvidence -> SubGoalDepth -> TcS ()
isWanted :: CtEvidence -> Bool
isDerived :: CtEvidence -> Bool
isWantedCt :: Ct -> Bool
isDerivedCt :: Ct -> Bool
pprFlavorArising :: CtEvidence -> SDoc
isFlexiTcsTv :: TyVar -> Bool
instFlexiTcSHelperTcS :: Name -> Kind -> TcS TcType
canRewrite :: CtEvidence -> CtEvidence -> Bool
canSolve :: CtEvidence -> CtEvidence -> Bool
mkGivenLoc :: WantedLoc -> SkolemInfo -> GivenLoc
ctWantedLoc :: Ct -> WantedLoc
runTcSWithEvBinds :: EvBindsVar -> TcS a -> TcM a
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
updFlatCache :: Ct -> TcS ()
addToSolved :: CtEvidence -> TcS ()
addSolvedFunEq :: CtEvidence -> TcS ()
data XEvTerm
data MaybeNew
Constructors
Fresh CtEvidence | |
Cached EvTerm |
freshGoals :: [MaybeNew] -> [CtEvidence]
getEvTerms :: [MaybeNew] -> [EvTerm]
xCtFlavor :: CtEvidence -> [TcPredType] -> XEvTerm -> TcS [CtEvidence]
rewriteCtFlavor :: CtEvidence -> TcPredType -> TcCoercion -> TcS (Maybe CtEvidence)
newWantedEvVar :: WantedLoc -> TcPredType -> TcS MaybeNew
instDFunConstraints :: WantedLoc -> TcThetaType -> TcS [MaybeNew]
newDerived :: WantedLoc -> TcPredType -> TcS (Maybe CtEvidence)
xCtFlavor_cache :: Bool -> CtEvidence -> [TcPredType] -> XEvTerm -> TcS [CtEvidence]
rewriteCtFlavor_cache :: Bool -> CtEvidence -> TcPredType -> TcCoercion -> TcS (Maybe CtEvidence)
setWantedTyBind :: TcTyVar -> TcType -> TcS ()
getInstEnvs :: TcS (InstEnv, InstEnv)
getTcSTyBindsMap :: TcS (TyVarEnv (TcTyVar, TcType))
newFlattenSkolemTy :: TcType -> TcS TcType
data InertCans
Constructors
IC | |
Fields
|
Instances
getInertEqs :: TcS (TyVarEnv Ct, InScopeSet)
getCtCoercion :: EvBindMap -> Ct -> TcCoercion
lookupInInerts :: InertSet -> TcPredType -> Maybe CtEvidence
getInertUnsolved :: InertSet -> Cts
getInertInsols :: InertSet -> Cts
splitInertsForImplications :: InertSet -> ([Ct], InertSet)
modifyInertTcS :: (InertSet -> (a, InertSet)) -> TcS a
updInertSetTcS :: Ct -> 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
|
type CtFamHeadMap = FamHeadMap Ct
data PredMap a
Instances
Outputable a => Outputable (PredMap a) |
data FamHeadMap a
Instances
Outputable a => Outputable (FamHeadMap a) |
partCtFamHeadMap :: (Ct -> Bool) -> CtFamHeadMap -> (Cts, CtFamHeadMap)
lookupFamHead :: FamHeadMap a -> TcType -> Maybe a
filterSolved :: (CtEvidence -> Bool) -> PredMap CtEvidence -> PredMap CtEvidence
instDFunType :: DFunId -> [DFunInstType] -> TcS ([TcType], TcType)
newFlexiTcSTy :: Kind -> TcS TcType
instFlexiTcS :: [TKVar] -> TcS (TvSubst, [TcType])
compatKind :: Kind -> Kind -> Bool
type TcsUntouchables = (Untouchables, TcTyVarSet)
isTouchableMetaTyVar :: TcTyVar -> TcS Bool
getDefaultInfo :: TcS ([Type], (Bool, Bool))
getDynFlags :: HasDynFlags m => m DynFlags
matchClass :: Class -> [Type] -> TcS (MatchInstResult (DFunId, [Maybe TcType]))
data MatchInstResult mi
Constructors
MatchInstNo | |
MatchInstSingle mi | |
MatchInstMany |
checkWellStagedDFun :: PredType -> DFunId -> WantedLoc -> TcS ()