Documentation
solve :: (Queue q, Solver solver, CTransformer c, CForSolver c ~ solver, Elem q ~ (Label solver, Tree solver (CForResult c), CTreeState c)) => q -> c -> Tree solver (CForResult c) -> (Int, [CForResult c])Source
data TStack es ts solver a whereSource
TStack :: (CTransformer c, CForSolver c ~ solver, CForResult c ~ a) => c -> TStack (CEvalState c) (CTreeState c) solver a |
Solver solver => Transformer (TStack es ts solver a) |
nextTStack :: (Solver solver, Queue q, Elem q ~ (Label solver, Tree solver a, ts)) => Int -> Tree solver a -> q -> TStack es ts solver a -> es -> ts -> solver (Int, [a])Source
type CSearchSig c a = (Solver (CForSolver c), CTransformer c) => Tree (CForSolver c) a -> c -> CEvalState c -> CTreeState c -> EVAL c a -> CONTINUE c a -> EXIT c a -> CForSolver c (Int, [a])Source
type CContinueSig c a = (Solver (CForSolver c), CTransformer c) => c -> CEvalState c -> CONTINUE c a -> EXIT c a -> CForSolver c (Int, [a])Source
type EVAL c a = Tree (CForSolver c) a -> CEvalState c -> CTreeState c -> CForSolver c (Int, [a])Source
type CONTINUE c a = CEvalState c -> CForSolver c (Int, [a])Source
type EXIT c a = CEvalState c -> CForSolver c (Int, [a])Source
class Solver (CForSolver c) => CTransformer c whereSource
type CEvalState c :: *Source
type CTreeState c :: *Source
type CForSolver c :: * -> *Source
type CForResult c :: *Source
initCT :: c -> (CEvalState c, CTreeState c)Source
leftCT :: c -> CTreeState c -> CTreeState cSource
rightCT :: c -> CTreeState c -> CTreeState cSource
nextCT :: CSearchSig c (CForResult c)Source
returnCT :: CContinueSig c (CForResult c)Source
completeCT :: c -> CEvalState c -> BoolSource
Solver solver => CTransformer (CBranchBoundST solver a) | |
Solver solver => CTransformer (CFirstSolutionST solver a) | |
Solver solver => CTransformer (CIdentityCST solver a) | |
Solver solver => CTransformer (CRandomST solver a) | |
Solver solver => CTransformer (CLimitedDiscrepancyST solver a) | |
Solver solver => CTransformer (CDepthBoundedST solver a) | |
Solver solver => CTransformer (CNodeBoundedST solver a) | |
Solver solver => CTransformer (SealedCST es ts solver a) | |
Solver solver => CTransformer (Composition es ts solver a) |
evalCT :: CSearchSig c aSource
continueCT :: CContinueSig c aSource
exitCT :: CContinueSig c aSource
newtype CNodeBoundedST solver a Source
Solver solver => CTransformer (CNodeBoundedST solver a) |
newtype CDepthBoundedST solver a Source
Solver solver => CTransformer (CDepthBoundedST solver a) |
newtype CLimitedDiscrepancyST solver a Source
Solver solver => CTransformer (CLimitedDiscrepancyST solver a) |
data CFirstSolutionST solver a Source
Solver solver => CTransformer (CFirstSolutionST solver a) |
data Composition es ts solver a whereSource
:- :: (CTransformer c1, CTransformer c2, CForSolver c1 ~ solver, CForSolver c2 ~ solver, CForResult c1 ~ a, CForResult c2 ~ a) => c1 -> c2 -> Composition (CEvalState c1, CEvalState c2) (CTreeState c1, CTreeState c2) solver a |
Solver solver => CTransformer (Composition es ts solver a) |
newtype CBranchBoundST solver a Source
Solver solver => CTransformer (CBranchBoundST solver a) |
data BBEvalState solver Source
data SealedCST es ts solver a whereSource
Seal :: CTransformer c => c -> SealedCST (CEvalState c) (CTreeState c) (CForSolver c) (CForResult c) |
Solver solver => CTransformer (SealedCST es ts solver a) |