-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Dependency resolution for package management -- -- A library for resolving dependencies; uses a topological sort to -- construct a build plan and then allows choice between all compatible -- plans. @package dependency @version 1.2.0.0 module Data.Dependency -- | Dependency resolution is guided by the following: -- --
    --
  1. Always use a newer version when possible
  2. --
  3. Obey constraints
  4. --
  5. Specify an error for circular dependencies
  6. --
  7. Specify an error for overconstrained builds
  8. --
  9. Specify an error if a package is not present
  10. --
  11. Present a solution whenever one exists.
  12. --
-- -- This doesn't do any package resolution beyond versioning. resolveDependencies :: PackageSet Dependency -> [Dependency] -> DepM [[Dependency]] -- | A generic dependency, consisting of a package name and version, as -- well as dependency names and their constraints. data Dependency Dependency :: String -> [(String, Constraint Version)] -> Version -> Dependency [_libName] :: Dependency -> String [_libDependencies] :: Dependency -> [(String, Constraint Version)] [_libVersion] :: Dependency -> Version -- | A package set is simply a map between package names and a set of -- packages. newtype PackageSet a PackageSet :: Map String (Set a) -> PackageSet a [_packageSet] :: PackageSet a -> Map String (Set a) newtype Version Version :: [Natural] -> Version type DepM = Either ResolveError -- | An error that can occur during package resolution. data ResolveError InternalError :: ResolveError NotPresent :: String -> ResolveError Conflicts :: [String] -> String -> ResolveError CircularDependencies :: String -> String -> ResolveError -- | Monoid/functor for representing constraints. data Constraint a LessThanEq :: a -> Constraint a GreaterThanEq :: a -> Constraint a Eq :: a -> Constraint a Bounded :: (Constraint a) -> (Constraint a) -> Constraint a None :: Constraint a