universum-1.2.0: Custom prelude used in Serokell

Safe HaskellSafe
LanguageHaskell2010

Universum.Monad.Maybe

Description

Utility functions to work with Maybe data type as monad.

Synopsis

Documentation

(?:) :: Maybe a -> a -> a infixr 0 Source #

Similar to fromMaybe but with flipped arguments.

>>> readMaybe "True" ?: False
True
>>> readMaybe "Tru" ?: False
False

whenJust :: Applicative f => Maybe a -> (a -> f ()) -> f () Source #

Specialized version of for_ for Maybe. It's used for code readability. Also helps to avoid space leaks: Foldable.mapM_ space leak.

>>> whenJust Nothing $ \b -> print (not b)
>>> whenJust (Just True) $ \b -> print (not b)
False

whenJustM :: Monad m => m (Maybe a) -> (a -> m ()) -> m () Source #

Monadic version of whenJust.

whenNothing :: Applicative f => Maybe a -> f a -> f a Source #

Performs default Applicative action if Nothing is given. Otherwise returns content of Just pured to Applicative.

>>> whenNothing Nothing [True, False]
[True,False]
>>> whenNothing (Just True) [True, False]
[True]

whenNothing_ :: Applicative f => Maybe a -> f () -> f () Source #

Performs default Applicative action if Nothing is given. Do nothing for Just. Convenient for discarding Just content.

>>> whenNothing_ Nothing $ putTextLn "Nothing!"
Nothing!
>>> whenNothing_ (Just True) $ putTextLn "Nothing!"

whenNothingM :: Monad m => m (Maybe a) -> m a -> m a Source #

Monadic version of whenNothing.

whenNothingM_ :: Monad m => m (Maybe a) -> m () -> m () Source #

Monadic version of whenNothingM_.