neither-0.1.0: Provide versions of Either with good monad and applicative instances.

Control.Monad.Invert

Contents

Synopsis

Typeclass

Exceptions

finally :: MonadInvertIO m => m a -> m b -> m aSource

catch :: (Exception e, MonadInvertIO m) => m a -> (e -> m a) -> m aSource

block :: MonadInvertIO m => m a -> m aSource

unblock :: MonadInvertIO m => m a -> m aSource

bracket :: MonadInvertIO m => m a -> (a -> m b) -> (a -> m c) -> m cSource

There is a very important distinction between this function and bracket_: in this version, the monadic side effects from the initialization function and kept, while in bracket_ they are discarded.

bracket_ :: MonadInvertIO m => m a -> m b -> m c -> m cSource

See bracket.

onException :: MonadInvertIO m => m a -> m b -> m aSource

Memory allocation

alloca :: (Storable a, MonadInvertIO m) => (Ptr a -> m b) -> m bSource

allocaBytes :: MonadInvertIO m => Int -> (Ptr a -> m b) -> m bSource

withForeignPtr :: MonadInvertIO m => ForeignPtr a -> (Ptr a -> m b) -> m bSource