[commit: Cabal] master: added Progress instances (e7fc5e2)
Ian Lynagh
igloo at earth.li
Fri Nov 4 18:05:29 CET 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/e7fc5e2dfd1baf8ee4078a1215306a2473ea1005
>---------------------------------------------------------------
commit e7fc5e2dfd1baf8ee4078a1215306a2473ea1005
Author: Andres Loeh <andres at well-typed.com>
Date: Sun Jun 5 11:28:09 2011 +0000
added Progress instances
>---------------------------------------------------------------
.../Distribution/Client/Dependency/Types.hs | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/cabal-install/Distribution/Client/Dependency/Types.hs b/cabal-install/Distribution/Client/Dependency/Types.hs
index 16c5b85..23b7566 100644
--- a/cabal-install/Distribution/Client/Dependency/Types.hs
+++ b/cabal-install/Distribution/Client/Dependency/Types.hs
@@ -22,6 +22,12 @@ module Distribution.Client.Dependency.Types (
foldProgress,
) where
+import Control.Applicative
+ ( Applicative(..), Alternative(..) )
+
+import Data.Monoid
+ ( Monoid(..) )
+
import Distribution.Client.Types
( SourcePackage(..), InstalledPackage )
import qualified Distribution.Client.InstallPlan as InstallPlan
@@ -139,3 +145,11 @@ instance Functor (Progress step fail) where
instance Monad (Progress step fail) where
return a = Done a
p >>= f = foldProgress Step Fail f p
+
+instance Applicative (Progress step fail) where
+ pure a = Done a
+ p <*> x = foldProgress Step Fail (flip fmap x) p
+
+instance Monoid fail => Alternative (Progress step fail) where
+ empty = Fail mempty
+ p <|> q = foldProgress Step (const q) Done p
More information about the Cvs-libraries
mailing list