hsdev-0.3.2.0: src/Data/Maybe/JustIf.hs
module Data.Maybe.JustIf (
justIf,
whenJust, whenJustM
) where
import Control.Monad
-- | Return @Just@ if True
justIf :: a -> Bool -> Maybe a
x `justIf` True = Just x
_ `justIf` False = Nothing
-- | Calls function when value is @Just@
whenJust :: Applicative m => Maybe a -> (a -> m b) -> m ()
whenJust v fn = maybe (pure ()) (void . fn) v
-- | Calls function when monad returns @Just@
whenJustM :: Monad m => m (Maybe a) -> (a -> m b) -> m ()
whenJustM mv fn = mv >>= (`whenJust` fn)