module Workflow.Extra ( module Workflow.Extra , module X ) where import Control.DeepSeq as X (NFData) import Data.Hashable as X (Hashable) import Data.Semigroup as X (Semigroup) import Control.Monad.Catch as X (MonadThrow(..)) import Data.Data as X (Data) import GHC.Generics as X (Generic) import Control.Arrow as X ((>>>)) import Control.Monad as X ((>=>)) import Data.Function as X ((&),on) import Data.Foldable as X (traverse_) import Control.Exception (ErrorCall(..)) (-:) :: a -> b -> (a,b) (-:) = (,) infix 1 -: failed :: (MonadThrow m) => String -> m a failed = ErrorCall >>> throwM