Add fmapM_maybe :: Monad m => (a -> m b) -> Maybe a -> m (Maybe b)
authorsimonpj@microsoft.com <unknown>
Thu, 23 Jul 2009 06:49:32 +0000 (06:49 +0000)
committersimonpj@microsoft.com <unknown>
Thu, 23 Jul 2009 06:49:32 +0000 (06:49 +0000)
This function isn't used at the moment, but Max added it, and it
looks useful.

compiler/utils/Maybes.lhs

index 8a6a5f4..1f443db 100644 (file)
@@ -10,6 +10,7 @@ module Maybes (
         MaybeErr(..), -- Instance of Monad
         failME, isSuccess,
 
+        fmapM_maybe,
         orElse,
         mapCatMaybes,
         allMaybes,
@@ -74,6 +75,14 @@ orElse :: Maybe a -> a -> a
 Nothing  `orElse` y = y
 \end{code}
 
+\begin{code}
+fmapM_maybe :: Monad m => (a -> m b) -> Maybe a -> m (Maybe b)
+fmapM_maybe _ Nothing = return Nothing
+fmapM_maybe f (Just x) = do
+        x' <- f x
+        return $ Just x'
+\end{code}
+
 %************************************************************************
 %*                                                                     *
 \subsection[MaybeT type]{The @MaybeT@ monad transformer}