Safe Haskell | None |
---|---|
Language | Haskell2010 |
Intensional.InferM
Synopsis
- type InferM = RWS InferEnv ConstraintSet InferState
- type Context = Map Name Scheme
- data InferEnv = InferEnv {}
- data Stats = Stats {}
- runInferM :: InferM a -> Module -> Context -> (a, [Atomic], Stats)
- saturate :: Refined a => InferM a -> InferM a
- branchAny :: [DataCon] -> DataType TyCon -> InferM a -> InferM a
- emitDD :: DataType TyCon -> DataType TyCon -> InferM ()
- emitDK :: DataType TyCon -> [DataCon] -> SrcSpan -> InferM ()
- emitKD :: DataCon -> SrcSpan -> DataType TyCon -> InferM ()
- fresh :: InferM RVar
- putVar :: Name -> Scheme -> InferM a -> InferM a
- putVars :: Context -> InferM a -> InferM a
- setLoc :: SrcSpan -> InferM a -> InferM a
- getExternalName :: NamedThing a => a -> InferM Name
- isTrivial :: TyCon -> Bool
- isIneligible :: TyCon -> InferM Bool
- noteD :: Int -> InferM ()
- noteK :: Int -> InferM ()
- incrN :: InferM ()
- noteErrs :: ConstraintSet -> InferM ()
- cexs :: ConstraintSet -> InferM ConstraintSet
Documentation
getExternalName :: NamedThing a => a -> InferM Name Source #
noteErrs :: ConstraintSet -> InferM () Source #
Given a set of trivially unsatisfiable constraints es
,
noteErrs es
is the action that records them
in the accumulating set in the inference state.
cexs :: ConstraintSet -> InferM ConstraintSet Source #
Given a constraint set cs
, cexs cs
is the inference action that
attempts to build a model of cs
and returns the set of counterexamples.