The main SAT solver monad. Embeds ST
. See type SSTErrMonad
, which stands
for ''State ST Error Monad''.
- liftST :: MonadST s m => ST s a -> m a
- runSSTErrMonad :: Error e => SSTErrMonad e st s a -> st -> ST s (Either e a, st)
- evalSSTErrMonad :: Error e => SSTErrMonad e st s a -> st -> ST s (Either e a)
- data SSTErrMonad e st s a
Documentation
runSSTErrMonad :: Error e => SSTErrMonad e st s a -> st -> ST s (Either e a, st)Source
runSSTErrMonad m s
executes a SSTErrMonad
action with initial state s
until an error occurs or a result is returned.
evalSSTErrMonad :: Error e => SSTErrMonad e st s a -> st -> ST s (Either e a)Source
data SSTErrMonad e st s a Source
SSTErrMonad e st s a
: the error type e
, state type st
, ST
thread
s
and result type a
.
This is a monad embedding ST
and supporting error handling and state
threading. It uses CPS to avoid checking Left
and Right
for every
>>=
; instead only checks on catchError
. Idea adapted from
http://haskell.org/haskellwiki/Performance/Monads.
MonadState st (SSTErrMonad e st s) | |
Error e => MonadError e (SSTErrMonad e st s) | |
MonadST s (SSTErrMonad e st s) | |
Monad (SSTErrMonad e st s) | |
Error e => MonadPlus (SSTErrMonad e st s) |