Cabal-1.6.0.0: A framework for packaging Haskell softwareContentsIndex
Distribution.Package
Portabilityportable
Maintainercabal-devel@haskell.org
Contents
Package ids
Package dependencies
Package classes
Description
Defines a package identifier along with a parser and pretty printer for it. PackageIdentifiers consist of a name and an exact version. It also defines a Dependency data type. A dependency is a package name and a version range, like "foo >= 1.2 && < 2".
Synopsis
newtype PackageName = PackageName String
data PackageIdentifier = PackageIdentifier {
pkgName :: PackageName
pkgVersion :: Version
}
type PackageId = PackageIdentifier
data Dependency = Dependency PackageName VersionRange
thisPackageVersion :: PackageIdentifier -> Dependency
notThisPackageVersion :: PackageIdentifier -> Dependency
class Package pkg where
packageId :: pkg -> PackageIdentifier
packageName :: Package pkg => pkg -> PackageName
packageVersion :: Package pkg => pkg -> Version
class Package pkg => PackageFixedDeps pkg where
depends :: pkg -> [PackageIdentifier]
Package ids
newtype PackageName
Constructors
PackageName String
show/hide Instances
data PackageIdentifier
The name and version of a package.
Constructors
PackageIdentifier
pkgName :: PackageNameThe name of this package, eg. foo
pkgVersion :: Versionthe version of this package, eg 1.2
show/hide Instances
type PackageId = PackageIdentifier
Type alias so we can use the shorter name PackageId.
Package dependencies
data Dependency
Constructors
Dependency PackageName VersionRange
show/hide Instances
thisPackageVersion :: PackageIdentifier -> Dependency
notThisPackageVersion :: PackageIdentifier -> Dependency
Package classes
class Package pkg where

Class of things that can be identified by a PackageIdentifier

Types in this class are all notions of a package. This allows us to have different types for the different phases that packages go though, from simple name/id, package description, configured or installed packages.

Methods
packageId :: pkg -> PackageIdentifier
show/hide Instances
packageName :: Package pkg => pkg -> PackageName
packageVersion :: Package pkg => pkg -> Version
class Package pkg => PackageFixedDeps pkg where

Subclass of packages that have specific versioned dependencies.

So for example a not-yet-configured package has dependencies on version ranges, not specific versions. A configured or an already installed package depends on exact versions. Some operations or data structures (like dependency graphs) only make sense on this subclass of package types.

Methods
depends :: pkg -> [PackageIdentifier]
show/hide Instances
Produced by Haddock version 0.8