summaryrefslogtreecommitdiff
path: root/compiler/utils
diff options
context:
space:
mode:
authorAustin Seipp <austin@well-typed.com>2014-01-13 18:39:10 -0600
committerAustin Seipp <austin@well-typed.com>2014-01-14 03:46:08 -0600
commit10d36f3cb20a85a5cf7f11ba1d6a0ac1bb6b1a7f (patch)
treeaac1cfdb7660de7d2f266251300d1b05b1de28e4 /compiler/utils
parentdfc32cd54e1b6d624ebb9d26772ce787aac3421d (diff)
downloadhaskell-10d36f3cb20a85a5cf7f11ba1d6a0ac1bb6b1a7f.tar.gz
Fix AMP warnings for MaybeT/MaybeErr
Signed-off-by: Austin Seipp <austin@well-typed.com>
Diffstat (limited to 'compiler/utils')
-rw-r--r--compiler/utils/Maybes.lhs14
1 files changed, 13 insertions, 1 deletions
diff --git a/compiler/utils/Maybes.lhs b/compiler/utils/Maybes.lhs
index 859908e266..3c943bd224 100644
--- a/compiler/utils/Maybes.lhs
+++ b/compiler/utils/Maybes.lhs
@@ -20,7 +20,8 @@ module Maybes (
MaybeT(..)
) where
-
+import Control.Applicative
+import Control.Monad
import Data.Maybe
infixr 4 `orElse`
@@ -95,6 +96,10 @@ newtype MaybeT m a = MaybeT {runMaybeT :: m (Maybe a)}
instance Functor m => Functor (MaybeT m) where
fmap f x = MaybeT $ fmap (fmap f) $ runMaybeT x
+instance (Monad m, Functor m) => Applicative (MaybeT m) where
+ pure = return
+ (<*>) = ap
+
instance Monad m => Monad (MaybeT m) where
return = MaybeT . return . Just
x >>= f = MaybeT $ runMaybeT x >>= maybe (return Nothing) (runMaybeT . f)
@@ -112,6 +117,13 @@ instance Monad m => Monad (MaybeT m) where
\begin{code}
data MaybeErr err val = Succeeded val | Failed err
+instance Functor (MaybeErr err) where
+ fmap = liftM
+
+instance Applicative (MaybeErr err) where
+ pure = return
+ (<*>) = ap
+
instance Monad (MaybeErr err) where
return v = Succeeded v
Succeeded v >>= k = k v