-- 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.0.0.0
module Data.Dependency
-- | Dependency resolution is guided by the following:
--
--
-- - Always use a newer version when possible
-- - Obey constraints
-- - Specify an error for circular dependencies
-- - Specify an error for overconstrained builds
-- - Specify an error if a package is not present
-- - Present a solution whenever one exists.
--
--
-- This doesn't do any package resolution beyond versioning.
resolveDependencies :: PackageSet Dependency -> [Dependency] -> DepM [[Dependency]]
-- | This splits dependencies into phases
buildSequence :: [Dependency] -> [[Dependency]]
-- | Check a given dependency is compatible with in-scope dependencies.
check :: Dependency -> [Dependency] -> Bool
-- | 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 :: [Integer] -> Version
type DepM = Either ResolveError
-- | An error that can occur during package resolution.
data ResolveError
InternalError :: ResolveError
NotPresent :: String -> ResolveError
Conflicts :: [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