module Effectful.Exception
(
C.MonadThrow(..)
, Safe.throwString
, Safe.StringException(..)
, C.MonadCatch(..)
, Safe.catchIO
, Safe.catchIOError
, Safe.catchAny
, Safe.catchDeep
, Safe.catchAnyDeep
, Safe.catchAsync
, Safe.catchJust
, Safe.handle
, Safe.handleIO
, Safe.handleIOError
, Safe.handleAny
, Safe.handleDeep
, Safe.handleAnyDeep
, Safe.handleAsync
, Safe.handleJust
, Safe.try
, Safe.tryIO
, Safe.tryAny
, Safe.tryDeep
, Safe.tryAnyDeep
, Safe.tryAsync
, Safe.tryJust
, Safe.Handler(..)
, Safe.catches
, Safe.catchesDeep
, Safe.catchesAsync
, C.MonadMask(..)
, C.ExitCase(..)
, Safe.onException
, Safe.bracket
, Safe.bracket_
, Safe.finally
, Safe.withException
, Safe.bracketOnError
, Safe.bracketOnError_
, Safe.bracketWithError
, Safe.SyncExceptionWrapper(..)
, Safe.toSyncException
, Safe.AsyncExceptionWrapper(..)
, Safe.toAsyncException
, Safe.isSyncException
, Safe.isAsyncException
, evaluate
, evaluateDeep
, E.SomeException(..)
, E.Exception(..)
, E.IOException
, E.ArithException(..)
, E.ArrayException(..)
, E.AssertionFailed(..)
, E.NoMethodError(..)
, E.PatternMatchFail(..)
, E.RecConError(..)
, E.RecSelError(..)
, E.RecUpdError(..)
, E.ErrorCall(..)
, E.TypeError(..)
, E.SomeAsyncException(..)
, E.AsyncException(..)
, E.asyncExceptionToException
, E.asyncExceptionFromException
, E.NonTermination(..)
, E.NestedAtomically(..)
, E.BlockedIndefinitelyOnMVar(..)
, E.BlockedIndefinitelyOnSTM(..)
, E.AllocationLimitExceeded(..)
, E.CompactionFailed(..)
, E.Deadlock(..)
, E.assert
) where
import Control.DeepSeq
import Control.Exception qualified as E
import Control.Exception.Safe qualified as Safe
import Control.Monad.Catch qualified as C
import Effectful
import Effectful.Dispatch.Static
evaluate :: a -> Eff es a
evaluate :: forall a (es :: [Effect]). a -> Eff es a
evaluate = IO a -> Eff es a
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO a -> Eff es a) -> (a -> IO a) -> a -> Eff es a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> IO a
forall a. a -> IO a
E.evaluate
evaluateDeep :: NFData a => a -> Eff es a
evaluateDeep :: forall a (es :: [Effect]). NFData a => a -> Eff es a
evaluateDeep = IO a -> Eff es a
forall a (es :: [Effect]). IO a -> Eff es a
unsafeEff_ (IO a -> Eff es a) -> (a -> IO a) -> a -> Eff es a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> IO a
forall a. a -> IO a
E.evaluate (a -> IO a) -> (a -> a) -> a -> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> a
forall a. NFData a => a -> a
force