diff options
author | Austin Seipp <austin@well-typed.com> | 2014-01-13 18:39:10 -0600 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2014-01-14 03:46:08 -0600 |
commit | 10d36f3cb20a85a5cf7f11ba1d6a0ac1bb6b1a7f (patch) | |
tree | aac1cfdb7660de7d2f266251300d1b05b1de28e4 /compiler/utils | |
parent | dfc32cd54e1b6d624ebb9d26772ce787aac3421d (diff) | |
download | haskell-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.lhs | 14 |
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 |