úÎVPF     NoneA Monad# which can be used as a base for a  ResourceT. A  ResourceT* has some restrictions on its base monad:   runResourceT requires an instance of MonadBaseControl IO.  *  MonadResource requires an instance of  MonadThrow,  MonadUnsafeIO, MonadIO, and  Applicative. While any instance of MonadBaseControl IO should be an instance of the N other classes, this is not guaranteed by the type system (e.g., you may have 5 a transformer in your stack with does not implement  MonadThrow ). Ideally, K we would like to simply create an alias for the five type classes listed, . but this is not possible with GHC currently. MInstead, this typeclass acts as a proxy for the other five. Its only purpose * is to make your type signatures shorter. Note that earlier versions of conduit had a typeclass  ResourceIO. This  fulfills much the same role.  Since 0.3.2 KDetermine if some monad is still active. This is intended to prevent usage J of a monadic state after it has been closed. This is necessary for such  cases as lazy I/3O, where an unevaluated thunk may still refer to a  closed  ResourceT.  Since 0.3.0 A Monad2 based on some monad which allows running of some  actions, # via unsafe calls. This applies to  and , for instance.  Since 0.3.0 A Monad? which can throw exceptions. Note that this does not work in a  vanilla ST or Identity$ monad. Instead, you should use the  9 transformer in your stack if you are dealing with a non-IO base monad.  Since 0.3.0 8The express purpose of this transformer is to allow non-IO -based monad $ stacks to catch exceptions via the  typeclass.  Since 0.3.0 CIndicates either an error in the library, or misuse of it (e.g., a   ResourceT'+s state is accessed after being released).  Since 0.3.0 A MonadA which allows for safe resource allocation. In theory, any monad  transformer stack included a  ResourceT can be an instance of   MonadResource. Note:  runResourceT has a requirement for a MonadBaseControl IO m monad, 1 which allows control operations to be lifted. A  MonadResource does not = have this requirement. This means that transformers such as ContT can be  an instance of  MonadResource. However, the ContT wrapper will need to be  unwrapped before calling  runResourceT.  Since 0.3.0 ERegister some action that will be called precisely once, either when   is called, or when the  is passed to .  Since 0.3.0 HCall a release action early, and deregister it from the list of cleanup  actions to be performed.  Since 0.3.0 FPerform some allocation, and automatically register a cleanup action. <This is almost identical to calling the allocation and then  register=ing the release action, but this properly handles masking of  asynchronous exceptions.  Since 0.3.0 (Perform asynchronous exception masking. This is more general then Control.Exception.mask, yet more efficient  than Control.Exception.Lifted.mask.  Since 0.3.0 IThe Resource transformer. This transformer keeps track of all registered ( actions, and calls them upon exit (via ). Actions may be  registered via /, or resources may be allocated atomically via  . allocate corresponds closely to bracket. /Releasing may be performed before exit via the  function. This is a N highly recommended optimization, as it will ensure that scarce resources are  freed early. Note that calling release% will deregister the action, so that 1 a release action will only ever be called once.  Since 0.3.0 FA lookup key for a specific release action. This value is returned by   and , and is passed to .  Since 0.3.0  Unwrap a 7 transformer, and call all registered release actions. ;Note that there is some reference counting involved due to . L If multiple threads are sharing the same collection of resources, only the  last call to  runResourceT will deallocate the resources.  Since 0.3.0 Transform the monad a  ResourceT& lives in. This is most often used to 9 strip or add new transformers to a stack, e.g. to run a ReaderT.  Since 0.3.0 Same as  , but immediately  any exception returned.  Since 0.3.0 HIntroduce a reference-counting scheme to allow a resource context to be G shared by multiple threads. Once the last thread exits, all remaining  resources will be released. HNote that abuse of this function will greatly delay the deallocation of I registered resources. This function should be used with care. A general  guideline: LIf you are allocating a resource that should be shared by multiple threads, N and will be held for a long time, you should allocate it at the beginning of  a new  ResourceT block and then call resourceForkIO from there.  Since 0.3.0 n  allocate free resource  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq   ^   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr       !"#$%$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvresourcet-0.3.3.1Control.Monad.Trans.Resourcemonad-control-0.3.2.1Control.Monad.Trans.ControlMonadBaseControlMonadResourceBase MonadActive monadActive MonadUnsafeIO unsafeLiftIO MonadThrow monadThrow ExceptionT runExceptionT InvalidAccess functionName MonadResourceregisterreleaseallocate resourceMask ResourceT ReleaseKey runResourceTtransResourceTrunExceptionT_resourceForkIOghc-prim GHC.TypesIObaseGHC.STST GHC.Exceptionthrow unResourceT ReleaseMapReleaseMapClosedNextKeyRefCount mapResourceT register'release' stateAlloc stateCleanupbracket_$fMonadActiveWriterT$fMonadActiveStateT$fMonadActiveRWST$fMonadActiveRWST0$fMonadActiveWriterT0$fMonadActiveStateT0$fMonadActiveReaderT$fMonadActiveErrorT$fMonadActiveMaybeT$fMonadActiveListT$fMonadActiveIdentityT$fMonadActiveST$fMonadActiveST0$fMonadActiveIO$fMonadActiveIdentity$fMonadActiveResourceT$fMonadUnsafeIOt$fMonadUnsafeIOST$fMonadUnsafeIOST0$fMonadUnsafeIOIO$fMonadThrowWriterT$fMonadThrowStateT$fMonadThrowRWST$fMonadThrowRWST0$fMonadThrowWriterT0$fMonadThrowStateT0$fMonadThrowResourceT$fMonadThrowContT$fMonadThrowReaderT$fMonadThrowErrorT$fMonadThrowMaybeT$fMonadThrowListT$fMonadThrowIdentityT$fMonadThrowIO$fMonadBaseControlbExceptionT$fMonadTransControlExceptionT$fMonadTransExceptionT$fMonadBasebExceptionT$fMonadExceptionT$fApplicativeExceptionT$fFunctorExceptionT$fMonadThrowExceptionT$fMonadBaseControlbResourceT$fMonadTransControlResourceT$fMonadBasebResourceT$fMonadIOResourceT$fMonadTransResourceT$fMonadResourceT$fApplicativeResourceT$fFunctorResourceT$fExceptionInvalidAccess$fShowInvalidAccess$fMonadResourceWriterT$fMonadResourceStateT$fMonadResourceRWST$fMonadResourceRWST0$fMonadResourceWriterT0$fMonadResourceStateT0$fMonadResourceContT$fMonadResourceReaderT$fMonadResourceErrorT$fMonadResourceMaybeT$fMonadResourceListT$fMonadResourceIdentityT$fMonadResourceResourceT$fMonadWriterwResourceT$fMonadStatesResourceT$fMonadReaderrResourceT$fMonadRWSrwsResourceT$fMonadErroreResourceT$fMonadContResourceT$fTypeable1ResourceT