Safe Haskell | None |
---|---|
Language | Haskell98 |
- data Status
- type State a = (Status, [a])
- complete :: State a -> Bool
- data CSP a = CSP {
- pnm :: PackageNameMap a
- relations :: Relations
- depFunction :: a -> Relations
- conflicts :: a -> Relations
- packageVersion :: a -> (BinPkgName, DebianVersion)
- controlCSP :: Control -> Relations -> (Paragraph -> Relations) -> CSP Paragraph
- testCSP :: FilePath -> (Paragraph -> Relations) -> String -> (CSP Paragraph -> IO a) -> IO a
- depF :: Paragraph -> Relations
- sidPackages :: [Char]
- gutsyPackages :: [Char]
- test :: FilePath -> String -> Labeler Paragraph -> IO ()
- packageVersionParagraph :: Paragraph -> (BinPkgName, DebianVersion)
- conflict :: CSP p -> p -> p -> Bool
- conflict' :: (BinPkgName, DebianVersion) -> Relation -> Bool
- mkTree :: a -> [Tree a] -> Tree a
- label :: Tree a -> a
- initTree :: (a -> [a]) -> a -> Tree a
- mapTree :: (a -> b) -> Tree a -> Tree b
- foldTree :: (a -> [b] -> b) -> Tree a -> b
- zipTreesWith :: (a -> b -> c) -> Tree a -> Tree b -> Tree c
- prune :: (a -> Bool) -> Tree a -> Tree a
- leaves :: Tree a -> [a]
- inhTree :: (b -> a -> b) -> b -> Tree a -> Tree b
- distrTree :: (a -> [b]) -> b -> Tree a -> Tree b
- mkSearchTree :: forall a. CSP a -> Tree (State a)
- earliestInconsistency :: CSP a -> State a -> Maybe ((BinPkgName, DebianVersion), (BinPkgName, DebianVersion))
- type ConflictSet = ([(BinPkgName, DebianVersion)], [Relation])
- isConflict :: ConflictSet -> Bool
- solutions :: Tree (State a, ConflictSet) -> [State a]
- type Labeler a = CSP a -> Tree (State a) -> Tree (State a, ConflictSet)
- search :: Labeler a -> CSP a -> [State a]
- bt :: Labeler a
- bj :: CSP p -> Tree (State p, ConflictSet) -> Tree (State p, ConflictSet)
- unionCS :: [ConflictSet] -> ConflictSet
- combine :: CSP p -> [(State p, ConflictSet)] -> [ConflictSet] -> ConflictSet
Basic CSP Types and Functions
CSP | |
|
Test CSP
controlCSP :: Control -> Relations -> (Paragraph -> Relations) -> CSP Paragraph Source
TODO addProvides -- see DQL.Exec
sidPackages :: [Char] Source
gutsyPackages :: [Char] Source
conflict' :: (BinPkgName, DebianVersion) -> Relation -> Bool Source
JAS: deal with Provides
(can a package provide more than one package?)
Tree Helper Functions
zipTreesWith :: (a -> b -> c) -> Tree a -> Tree b -> Tree c Source
mkSearchTree
mkSearchTree :: forall a. CSP a -> Tree (State a) Source
earliestInconsistency :: CSP a -> State a -> Maybe ((BinPkgName, DebianVersion), (BinPkgName, DebianVersion)) Source
earliestInconsistency does what it sounds like the 'reverse as' is because the vars are order high to low, but we want to find the lowest numbered (aka, eariest) inconsistency ??
Conflict Set
type ConflictSet = ([(BinPkgName, DebianVersion)], [Relation]) Source
conflicting packages and relations that require non-existant packages
isConflict :: ConflictSet -> Bool Source
Backtracking Labeler
BackJumping Solver
bj :: CSP p -> Tree (State p, ConflictSet) -> Tree (State p, ConflictSet) Source
bj - backjumping labeler
If the node already has a conflict set, then leave it alone.
Otherwise, the conflictset for the node is the combination of the conflict sets of its direct children.
unionCS :: [ConflictSet] -> ConflictSet Source
combine :: CSP p -> [(State p, ConflictSet)] -> [ConflictSet] -> ConflictSet Source