Safe Haskell | Safe-Infered |
---|
- data ConstraintSolver constraint info = ConstraintSolver (SolveOptions -> [constraint] -> (SolveResult info, LogEntries))
- makeConstraintSolver :: Empty (f () (BasicMonad f)) => (SolveOptions -> [constraint] -> BasicMonad f (SolveResult info)) -> ConstraintSolver constraint info
- solve :: SolveOptions -> [constraint] -> ConstraintSolver constraint info -> (SolveResult info, LogEntries)
- onlySolveConstraints :: (HasTI m info, HasBasic m info, HasSubst m info, HasQual m info, TypeConstraintInfo info, Solvable constraint m, MonadState s m, SolveState s, MonadWriter LogEntries m) => [constraint] -> m ()
- solveConstraints :: (HasTI m info, HasBasic m info, HasSubst m info, HasQual m info, TypeConstraintInfo info, Solvable constraint m, MonadState s m, SolveState s, MonadWriter LogEntries m) => SolveOptions -> [constraint] -> m (SolveResult info)
- solveResult :: (HasBasic m info, HasTI m info, HasSubst m info, HasQual m info, TypeConstraintInfo info) => m (SolveResult info)
- data SolveResult info = SolveResult {}
- emptyResult :: Int -> SolveResult info
- combineResults :: SolveResult info -> SolveResult info -> SolveResult info
- data SolveOptions = SolveOptions_ {}
- solveOptions :: SolveOptions
- initialize :: (HasBasic m info, HasQual m info, HasTI m info, Substitutable a) => a -> SolveOptions -> m ()
- type BasicMonad f = StateFixT (f ()) (Writer LogEntries)
- newtype LogEntries = LogEntries ([LogEntry] -> [LogEntry])
- data LogEntry = LogEntry {}
- noLogEntries :: LogEntries
- singleEntry :: Int -> String -> LogEntries
- evalBasicMonad :: Empty (f () (BasicMonad f)) => BasicMonad f a -> (a, LogEntries)
- logMsg :: MonadWriter LogEntries m => String -> m ()
- logMsgPrio :: MonadWriter LogEntries m => Int -> String -> m ()
- logState :: (MonadState s m, SolveState s, MonadWriter LogEntries m) => m ()
- module Control.Monad.Writer
Documentation
data ConstraintSolver constraint info Source
ConstraintSolver (SolveOptions -> [constraint] -> (SolveResult info, LogEntries)) |
makeConstraintSolver :: Empty (f () (BasicMonad f)) => (SolveOptions -> [constraint] -> BasicMonad f (SolveResult info)) -> ConstraintSolver constraint infoSource
solve :: SolveOptions -> [constraint] -> ConstraintSolver constraint info -> (SolveResult info, LogEntries)Source
onlySolveConstraints :: (HasTI m info, HasBasic m info, HasSubst m info, HasQual m info, TypeConstraintInfo info, Solvable constraint m, MonadState s m, SolveState s, MonadWriter LogEntries m) => [constraint] -> m ()Source
solveConstraints :: (HasTI m info, HasBasic m info, HasSubst m info, HasQual m info, TypeConstraintInfo info, Solvable constraint m, MonadState s m, SolveState s, MonadWriter LogEntries m) => SolveOptions -> [constraint] -> m (SolveResult info)Source
solveResult :: (HasBasic m info, HasTI m info, HasSubst m info, HasQual m info, TypeConstraintInfo info) => m (SolveResult info)Source
emptyResult :: Int -> SolveResult infoSource
combineResults :: SolveResult info -> SolveResult info -> SolveResult infoSource
data SolveOptions Source
initialize :: (HasBasic m info, HasQual m info, HasTI m info, Substitutable a) => a -> SolveOptions -> m ()Source
type BasicMonad f = StateFixT (f ()) (Writer LogEntries)Source
singleEntry :: Int -> String -> LogEntriesSource
evalBasicMonad :: Empty (f () (BasicMonad f)) => BasicMonad f a -> (a, LogEntries)Source
logMsg :: MonadWriter LogEntries m => String -> m ()Source
logMsgPrio :: MonadWriter LogEntries m => Int -> String -> m ()Source
logState :: (MonadState s m, SolveState s, MonadWriter LogEntries m) => m ()Source
Print the current state and add this as a debug message.
module Control.Monad.Writer