-- |

module Test.Sandwich.Util where

import Control.Monad

whenLeft :: (Monad m) => Either a b -> (a -> m ()) -> m ()
whenLeft :: forall (m :: * -> *) a b.
Monad m =>
Either a b -> (a -> m ()) -> m ()
whenLeft (Left a
x) a -> m ()
action = a -> m ()
action a
x
whenLeft (Right b
_) a -> m ()
_ = forall (m :: * -> *) a. Monad m => a -> m a
return ()

whenJust :: (Monad m) => Maybe a -> (a -> m b) -> m ()
whenJust :: forall (m :: * -> *) a b. Monad m => Maybe a -> (a -> m b) -> m ()
whenJust Maybe a
Nothing a -> m b
_ = forall (m :: * -> *) a. Monad m => a -> m a
return ()
whenJust (Just a
x) a -> m b
action = forall (f :: * -> *) a. Functor f => f a -> f ()
void forall a b. (a -> b) -> a -> b
$ a -> m b
action a
x