Safe Haskell | None |
---|---|
Language | Haskell98 |
This was previously known as the Resource monad. However, that term is confusing next to the ResourceT transformer, so it has been renamed.
- data Acquire a
- with :: MonadBaseControl IO m => Acquire a -> (a -> m b) -> m b
- withEx :: (MonadMask m, MonadIO m) => Acquire a -> (a -> m b) -> m b
- mkAcquire :: IO a -> (a -> IO ()) -> Acquire a
- mkAcquireType :: IO a -> (a -> ReleaseType -> IO ()) -> Acquire a
- allocateAcquire :: MonadResource m => Acquire a -> m (ReleaseKey, a)
- data ReleaseType
Documentation
A method for acquiring a scarce resource, providing the means of freeing
it when no longer needed. This data type provides
Functor
Applicative
Monad
instances for composing different resources
together. You can allocate these resources using either the bracket
pattern (via with
) or using ResourceT
(via allocateAcquire
).
This concept was originally introduced by Gabriel Gonzalez and described at: http://www.haskellforall.com/2013/06/the-resource-applicative.html. The implementation in this package is slightly different, due to taking a different approach to async exception safety.
Since 1.1.0
with :: MonadBaseControl IO m => Acquire a -> (a -> m b) -> m b Source
Allocate the given resource and provide it to the provided function. The
resource will be freed as soon as the inner block is exited, whether
normally or via an exception. This function is similar in function to
bracket
.
Since 1.1.0
withEx :: (MonadMask m, MonadIO m) => Acquire a -> (a -> m b) -> m b Source
Same as with
, but uses the MonadMask
typeclass from exceptions instead
of MonadBaseControl
from exceptions.
Since 1.1.3
Create an Acquire
value using the given allocate and free functions.
Since 1.1.0
:: IO a | acquire the resource |
-> (a -> ReleaseType -> IO ()) | free the resource |
-> Acquire a |
Same as mkAcquire
, but the cleanup function will be informed of how
cleanup was initiated. This allows you to distinguish, for example, between
normal and exceptional exits.
Since 1.1.2
allocateAcquire :: MonadResource m => Acquire a -> m (ReleaseKey, a) Source
Allocate a resource and register an action with the MonadResource
to
free the resource.
Since 1.1.0
data ReleaseType Source
The way in which a release is called.
Since 1.1.2