Copyright | (c) 2016 Stephen Diehl (c) 2016-2018 Serokell (c) 2018-2019 Kowainik |
---|---|
License | MIT |
Maintainer | Kowainik <xrom.xkov@gmail.com> |
Safe Haskell | Safe |
Language | Haskell2010 |
Utility functions to work with Maybe
data type as monad.
Synopsis
- (?:) :: Maybe a -> a -> a
- whenJust :: Applicative f => Maybe a -> (a -> f ()) -> f ()
- whenJustM :: Monad m => m (Maybe a) -> (a -> m ()) -> m ()
- whenNothing :: Applicative f => Maybe a -> f a -> f a
- whenNothing_ :: Applicative f => Maybe a -> f () -> f ()
- whenNothingM :: Monad m => m (Maybe a) -> m a -> m a
- whenNothingM_ :: Monad m => m (Maybe a) -> m () -> m ()
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
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_
.