monadiccp-0.7.7: Constraint Programming

Safe HaskellSafe
LanguageHaskell98

Control.CP.SearchTree

Synopsis

Documentation

data Tree s a where Source #

Constructors

Fail :: Tree s a 
Return :: a -> Tree s a 
Try :: Tree s a -> Tree s a -> Tree s a 
Add :: Constraint s -> Tree s a -> Tree s a 
NewVar :: Term s t => (t -> Tree s a) -> Tree s a 
Label :: s (Tree s a) -> Tree s a 

Instances

Solver s => Monad (Tree s) Source # 

Methods

(>>=) :: Tree s a -> (a -> Tree s b) -> Tree s b #

(>>) :: Tree s a -> Tree s b -> Tree s b #

return :: a -> Tree s a #

fail :: String -> Tree s a #

Solver s => Functor (Tree s) Source # 

Methods

fmap :: (a -> b) -> Tree s a -> Tree s b #

(<$) :: a -> Tree s b -> Tree s a #

Solver s => Applicative (Tree s) Source # 

Methods

pure :: a -> Tree s a #

(<*>) :: Tree s (a -> b) -> Tree s a -> Tree s b #

liftA2 :: (a -> b -> c) -> Tree s a -> Tree s b -> Tree s c #

(*>) :: Tree s a -> Tree s b -> Tree s b #

(<*) :: Tree s a -> Tree s b -> Tree s a #

Solver solver => MonadTree (Tree solver) Source # 

Associated Types

type TreeSolver (Tree solver :: * -> *) :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver (Tree solver)) -> Tree solver a -> Tree solver a Source #

false :: Tree solver a Source #

(\/) :: Tree solver a -> Tree solver a -> Tree solver a Source #

exists :: Term (TreeSolver (Tree solver)) t => (t -> Tree solver a) -> Tree solver a Source #

label :: TreeSolver (Tree solver) (Tree solver a) -> Tree solver a Source #

Show (Tree s a) Source # 

Methods

showsPrec :: Int -> Tree s a -> ShowS #

show :: Tree s a -> String #

showList :: [Tree s a] -> ShowS #

type TreeSolver (Tree solver) Source # 
type TreeSolver (Tree solver) = solver

transformTree :: Solver s => Mixin (Tree s a -> Tree s a) Source #

bindTree :: Solver s => Tree s a -> (a -> Tree s b) -> Tree s b Source #

insertTree :: Solver s => Tree s a -> Tree s () -> Tree s a Source #

(/\) :: MonadTree tree => tree a -> tree b -> tree b infixr 3 Source #

true :: MonadTree tree => tree () Source #

disj :: MonadTree tree => [tree a] -> tree a Source #

conj :: MonadTree tree => [tree ()] -> tree () Source #

disj2 :: MonadTree tree => [tree a] -> tree a Source #

prim :: MonadTree tree => TreeSolver tree a -> tree a Source #

addC :: MonadTree tree => Constraint (TreeSolver tree) -> tree () Source #

addT :: MonadTree tree => Constraint (TreeSolver tree) -> tree Bool Source #

exist :: (MonadTree tree, Term (TreeSolver tree) t) => Int -> ([t] -> tree a) -> tree a Source #

forall :: (MonadTree tree, Term (TreeSolver tree) t) => [t] -> (t -> tree ()) -> tree () Source #

showTree :: (Show (Constraint s), Show a, Solver s) => Int -> Tree s a -> s String Source #

mapTree :: (Solver s1, Solver s2, MonadTree m, TreeSolver m ~ s2) => (forall t. s1 t -> s2 t) -> Tree s1 a -> m a Source #

class (Monad m, Solver (TreeSolver m)) => MonadTree m where Source #

Generalization of the search tree data type, allowing monad transformer decoration.

Minimal complete definition

addTo, false, (\/), exists, label

Associated Types

type TreeSolver m :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver m) -> m a -> m a Source #

false :: m a Source #

(\/) :: m a -> m a -> m a infixl 2 Source #

exists :: Term (TreeSolver m) t => (t -> m a) -> m a Source #

label :: TreeSolver m (m a) -> m a Source #

Instances

Solver solver => MonadTree (Tree solver) Source # 

Associated Types

type TreeSolver (Tree solver :: * -> *) :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver (Tree solver)) -> Tree solver a -> Tree solver a Source #

false :: Tree solver a Source #

(\/) :: Tree solver a -> Tree solver a -> Tree solver a Source #

exists :: Term (TreeSolver (Tree solver)) t => (t -> Tree solver a) -> Tree solver a Source #

label :: TreeSolver (Tree solver) (Tree solver a) -> Tree solver a Source #

MonadTree t => MonadTree (StateT s t) Source # 

Associated Types

type TreeSolver (StateT s t :: * -> *) :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver (StateT s t)) -> StateT s t a -> StateT s t a Source #

false :: StateT s t a Source #

(\/) :: StateT s t a -> StateT s t a -> StateT s t a Source #

exists :: Term (TreeSolver (StateT s t)) t => (t -> StateT s t a) -> StateT s t a Source #

label :: TreeSolver (StateT s t) (StateT s t a) -> StateT s t a Source #

(Monoid w, MonadTree t) => MonadTree (WriterT w t) Source # 

Associated Types

type TreeSolver (WriterT w t :: * -> *) :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver (WriterT w t)) -> WriterT w t a -> WriterT w t a Source #

false :: WriterT w t a Source #

(\/) :: WriterT w t a -> WriterT w t a -> WriterT w t a Source #

exists :: Term (TreeSolver (WriterT w t)) t => (t -> WriterT w t a) -> WriterT w t a Source #

label :: TreeSolver (WriterT w t) (WriterT w t a) -> WriterT w t a Source #

(MonadTree m, Solver (TreeSolver m)) => MonadTree (ContT * r m) Source # 

Associated Types

type TreeSolver (ContT * r m :: * -> *) :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver (ContT * r m)) -> ContT * r m a -> ContT * r m a Source #

false :: ContT * r m a Source #

(\/) :: ContT * r m a -> ContT * r m a -> ContT * r m a Source #

exists :: Term (TreeSolver (ContT * r m)) t => (t -> ContT * r m a) -> ContT * r m a Source #

label :: TreeSolver (ContT * r m) (ContT * r m a) -> ContT * r m a Source #

MonadTree t => MonadTree (ReaderT * env t) Source # 

Associated Types

type TreeSolver (ReaderT * env t :: * -> *) :: * -> * Source #

Methods

addTo :: Constraint (TreeSolver (ReaderT * env t)) -> ReaderT * env t a -> ReaderT * env t a Source #

false :: ReaderT * env t a Source #

(\/) :: ReaderT * env t a -> ReaderT * env t a -> ReaderT * env t a Source #

exists :: Term (TreeSolver (ReaderT * env t)) t => (t -> ReaderT * env t a) -> ReaderT * env t a Source #

label :: TreeSolver (ReaderT * env t) (ReaderT * env t a) -> ReaderT * env t a Source #

untree :: Solver s => v -> Tree s v -> s v Source #