module Prelate.Control.Monad ( module Prelate.Control.Monad, module Control.Monad.Extra, ) where import Control.Monad.Extra ( findM, firstJustM, pureIf, untilJustM, whenJust, whenJustM, whenMaybe, whenMaybeM, whileJustM, whileM, ) -- |Call a side-effecting function on a value and return the value. tap :: Functor m => (a -> m ()) -> a -> m a tap :: forall (m :: * -> *) a. Functor m => (a -> m ()) -> a -> m a tap a -> m () f a a = a a a -> m () -> m a forall (f :: * -> *) a b. Functor f => a -> f b -> f a <$ a -> m () f a a {-# inline tap #-}