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)