X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Futils%2FMonadUtils.hs;h=733eda17005dbac5ba482493241ca368735915d1;hp=20646572df43aa916498d0c119cdcc7050823231;hb=5e5a08eb37f5513cecb47101a97fdaf09c4be040;hpb=2c8d42f32022f4950606d75d53e45a4c30d210df diff --git a/compiler/utils/MonadUtils.hs b/compiler/utils/MonadUtils.hs index 2064657..733eda1 100644 --- a/compiler/utils/MonadUtils.hs +++ b/compiler/utils/MonadUtils.hs @@ -19,6 +19,7 @@ module MonadUtils , mapMaybeM , anyM, allM , foldlM, foldrM + , maybeMapM ) where ---------------------------------------------------------------------------------------- @@ -149,3 +150,8 @@ foldlM = foldM foldrM :: (Monad m) => (b -> a -> m a) -> a -> [b] -> m a foldrM _ z [] = return z foldrM k z (x:xs) = do { r <- foldrM k z xs; k x r } + +-- | Monadic version of fmap specialised for Maybe +maybeMapM :: Monad m => (a -> m b) -> (Maybe a -> m (Maybe b)) +maybeMapM _ Nothing = return Nothing +maybeMapM m (Just x) = liftM Just $ m x