hw-prelude-0.0.0.1: src/HaskellWorks/Error.hs
module HaskellWorks.Error
( onLeft,
onNothing,
onLeftM,
onNothingM,
) where
import HaskellWorks.Prelude
onLeft :: forall e a m. ()
=> Monad m
=> (e -> m a) -> Either e a -> m a
onLeft f = either f pure
onNothing :: forall a m. ()
=> Monad m
=> m a -> Maybe a -> m a
onNothing h = maybe h return
onLeftM :: forall e a m. ()
=> Monad m
=> (e -> m a) -> m (Either e a) -> m a
onLeftM f action = onLeft f =<< action
onNothingM :: forall a m. ()
=> Monad m
=> m a -> m (Maybe a) -> m a
onNothingM h f = onNothing h =<< f