on 9d74f66 help sign in
stackage/Stackage/Types.hs
45 lines 1.5 kB history raw
1module Stackage.Types
2 ( module X
3 , module Stackage.Types
4 ) where
6import Data.Map as X (Map)
7import Data.Map (unionWith)
8import Data.Monoid (Monoid (..))
9import Data.Set as X (Set)
10import Data.Version as X (Version)
11import Distribution.Package as X (PackageIdentifier (..),
12 PackageName (..))
13import Distribution.Version as X (VersionRange (..))
15newtype PackageDB = PackageDB (Map PackageName PackageInfo)
16 deriving (Show, Eq, Ord)
18instance Monoid PackageDB where
19 mempty = PackageDB mempty
20 PackageDB x `mappend` PackageDB y =
21 PackageDB $ unionWith newest x y
22 where
23 newest pi1 pi2
24 | piVersion pi1 > piVersion pi2 = pi1
25 | otherwise = pi2
27data PackageInfo = PackageInfo
28 { piVersion :: Version
29 , piDeps :: Set PackageName
30 }
31 deriving (Show, Eq, Ord)
33data HaskellPlatform = HaskellPlatform
34 { hpcore :: Set PackageIdentifier
35 , hplibs :: Set PackageIdentifier
36 }
37 deriving (Show, Eq, Ord)
38instance Monoid HaskellPlatform where
39 mempty = HaskellPlatform mempty mempty
40 HaskellPlatform a x `mappend` HaskellPlatform b y = HaskellPlatform (mappend a b) (mappend x y)
42data InstallInfo = InstallInfo
43 { iiCore :: Set PackageName
44 , iiPackages :: Map PackageName Version
45 }