Safe Haskell | Safe |
---|---|

Language | Haskell98 |

- class Monad solver => Solver solver where
- type Constraint solver :: *
- type Label solver :: *

- add :: Solver solver => Constraint solver -> solver Bool
- run :: Solver solver => solver a -> a
- mark :: Solver solver => solver (Label solver)
- markn :: Solver solver => Int -> solver (Label solver)
- goto :: Solver solver => Label solver -> solver ()
- class Solver solver => Term solver term where
- type Help solver term

- newvar :: Term solver term => solver term
- help :: Term solver term => solver () -> term -> Help solver term

# Documentation

class Monad solver => Solver solver where Source #

add :: Constraint solver -> solver Bool Source #

add a constraint to the current state, and return whether the resulting state is consistent

run a computation

mark :: solver (Label solver) Source #

mark the current state, and return its label

markn :: Int -> solver (Label solver) Source #

mark the current state as discontinued, yet return a label that is usable n times

goto :: Label solver -> solver () Source #

go to the state with given label

add :: Solver solver => Constraint solver -> solver Bool Source #

add a constraint to the current state, and return whether the resulting state is consistent

markn :: Solver solver => Int -> solver (Label solver) Source #

mark the current state as discontinued, yet return a label that is usable n times