Safe Haskell | None |
---|
System.Console.Haskeline.MonadException
Contents
Description
This module redefines some of the functions in Control.Exception to
work for more general monads built on top of IO
.
- class MonadIO m => MonadException m where
- catch :: (MonadException m, Exception e) => m a -> (e -> m a) -> m a
- handle :: (MonadException m, Exception e) => (e -> m a) -> m a -> m a
- finally :: MonadException m => m a -> m b -> m a
- throwIO :: (MonadIO m, Exception e) => e -> m a
- throwTo :: (MonadIO m, Exception e) => ThreadId -> e -> m ()
- bracket :: MonadException m => m a -> (a -> m b) -> (a -> m c) -> m c
- liftIOOp :: MonadException m => ((a -> IO (m b)) -> IO (m c)) -> (a -> m b) -> m c
- liftIOOp_ :: MonadException m => (IO (m a) -> IO (m a)) -> m a -> m a
- newtype RunIO m = RunIO (forall b. m b -> IO (m b))
- class (Typeable e, Show e) => Exception e
- data SomeException where
- SomeException :: Exception e => e -> SomeException
- data IOException
The MonadException class
class MonadIO m => MonadException m where
An instance of MonadException
is generally made up of monad transformers
layered on top of the IO monad.
The controlIO
method enables us to "lift" a function that manages IO actions (such
as bracket
or catch
) into a function that wraps arbitrary monadic actions.
Instances
MonadException IO | |
MonadException m => MonadException (MaybeT m) | |
MonadException m => MonadException (ListT m) | |
MonadException m => MonadException (InputT m) | |
(Monoid w, MonadException m) => MonadException (WriterT w m) | |
MonadException m => MonadException (StateT s m) | |
MonadException m => MonadException (ReaderT r m) | |
(MonadException m, Error e) => MonadException (ErrorT e m) | |
(Monoid w, MonadException m) => MonadException (RWST r w s m) |
Generalizations of Control.Exception
catch :: (MonadException m, Exception e) => m a -> (e -> m a) -> m a
handle :: (MonadException m, Exception e) => (e -> m a) -> m a -> m a
finally :: MonadException m => m a -> m b -> m a
bracket :: MonadException m => m a -> (a -> m b) -> (a -> m c) -> m c
Helpers for defining "wrapper" functions
liftIOOp :: MonadException m => ((a -> IO (m b)) -> IO (m c)) -> (a -> m b) -> m c
Lift a IO operation
wrap :: (a -> IO b) -> IO b
to a more general monadic operation
liftIOOp wrap :: MonadException m => (a -> m b) -> m b
For example:
liftIOOp
(withFile
f m) :: MonadException m => (Handle -> m r) -> m rliftIOOp
alloca
:: (MonadException m, Storable a) => (Ptr a -> m b) -> m bliftIOOp
(withForeignPtr
fp) :: MonadException m => (Ptr a -> m b) -> m b
liftIOOp_ :: MonadException m => (IO (m a) -> IO (m a)) -> m a -> m a
Lift an IO operation
wrap :: IO a -> IO a
to a more general monadic operation
liftIOOp_ wrap :: MonadException m => m a -> m a
Internal implementation
newtype RunIO m
A RunIO
function takes a monadic action m
as input,
and outputs an IO action which performs the underlying impure part of m
and returns the ''pure'' part of m
.
Note that (RunIO return)
is an incorrect implementation, since it does not
separate the pure and impure parts of the monadic action. This module defines
implementations for several common monad transformers.
Constructors
RunIO (forall b. m b -> IO (m b)) |
Extensible Exceptions
class (Typeable e, Show e) => Exception e
Instances
Exception IOException | |
Exception SomeException | |
Exception Deadlock | |
Exception BlockedIndefinitelyOnSTM | |
Exception BlockedIndefinitelyOnMVar | |
Exception AsyncException | |
Exception AssertionFailed | |
Exception ArrayException | |
Exception ErrorCall | |
Exception ArithException | |
Exception RecUpdError | |
Exception RecSelError | |
Exception RecConError | |
Exception PatternMatchFail | |
Exception NonTermination | |
Exception NoMethodError | |
Exception NestedAtomically | |
Exception ExitCode | |
Exception Interrupt | |
Exception Dynamic |
data SomeException where
Constructors
SomeException :: Exception e => e -> SomeException |
Instances
Show SomeException | |
Typeable SomeException | |
Exception SomeException |
data IOException
Instances
Eq IOException | |
Show IOException | |
Typeable IOException | |
Error IOException | |
Exception IOException |