-- SPDX-FileCopyrightText: 2020 Tocqueville Group -- -- SPDX-License-Identifier: LicenseRef-MIT-TQ module Util.Exception ( -- * General simple helpers throwLeft ) where -- | If monadic action returns a 'Left' value, it will be -- thrown. Otherwise the returned value will be returned as is. throwLeft :: (MonadThrow m, Exception e) => m (Either e a) -> m a throwLeft :: m (Either e a) -> m a throwLeft = (m (Either e a) -> (Either e a -> m a) -> m a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case Left e :: e e -> e -> m a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM e e Right x :: a x -> a -> m a forall (m :: * -> *) a. Monad m => a -> m a return a x)