neither-0.1.0: Provide versions of Either with good monad and applicative instances.Source codeContentsIndex
Control.Monad.Invert
Contents
Typeclass
Exceptions
Memory allocation
Synopsis
class MonadIO m => MonadInvertIO m where
data InvertedIO m :: * -> *
type InvertedArg m
invertIO :: m a -> InvertedArg m -> IO (InvertedIO m a)
revertIO :: (InvertedArg m -> IO (InvertedIO m a)) -> m a
finally :: MonadInvertIO m => m a -> m b -> m a
catch :: (Exception e, MonadInvertIO m) => m a -> (e -> m a) -> m a
block :: MonadInvertIO m => m a -> m a
unblock :: MonadInvertIO m => m a -> m a
bracket :: MonadInvertIO m => m a -> (a -> m b) -> (a -> m c) -> m c
bracket_ :: MonadInvertIO m => m a -> m b -> m c -> m c
onException :: MonadInvertIO m => m a -> m b -> m a
alloca :: (Storable a, MonadInvertIO m) => (Ptr a -> m b) -> m b
allocaBytes :: MonadInvertIO m => Int -> (Ptr a -> m b) -> m b
withForeignPtr :: MonadInvertIO m => ForeignPtr a -> (Ptr a -> m b) -> m b
Typeclass
class MonadIO m => MonadInvertIO m whereSource
Associated Types
data InvertedIO m :: * -> *Source
type InvertedArg m Source
Methods
invertIO :: m a -> InvertedArg m -> IO (InvertedIO m a)Source
revertIO :: (InvertedArg m -> IO (InvertedIO m a)) -> m aSource
show/hide Instances
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
Produced by Haddock version 2.6.0