úÎ*½(î      experimental%tomac `at` pacific `dot` net `dot` au r a wraps a resource of type a so it can be managed  inside region r+ and automatically released upon exit from r. Extract a from the  wrapper. ATag that uniquely identifies the resource in the current region. Reference to region state. Finalizer for the resource.  A region tag  r captures state of the region r including all " currently allocated resources in r. : monad with support for region based resource allocation.  A computation of type  r rs a wraps an action of type  a  where rA is an unconstrained type variable indicating the current region  and rsC is a collection of all accessible regions within the computation.  actions can be lifted into the  monad using .  It is safe to throw  -s inside an  computation. = Allocated resources will be released on exit automatically.  Create the initial region, r&, and run the computation returning a  value of type  a. Create a new region r' inside r. All resources allocated in  r' are only accessible from r' and any of it's child regions. D On exit from the region, all allocated resources are automatically  released. Get the current region's tag. +Temporarily change the current region from r to r'. This allows  allocation of resources in r'. r'( has to be one of the parent regions of r.    experimental%tomac `at` pacific `dot` net `dot` au   a f will create a new  wrapper around the  value of type a in region r, given a finalizer f. H Each finalizer is guaranteed to automatically be called upon exit from  the region. K Finalizers are called in the last in, first out fashion. So the finalizer F of the very last resource allocated will be the first to get called. GNote that finalizers must not throw any errors. Failing to ensure that F all errors in a finalizer are handled may result in a resource leak.   res is used to force the resource res to be % released immediately. Finalizer for res will be called and removed ( from the stack of finalizers in region r'.     experimental%tomac `at` pacific `dot` net `dot` au    experimental%tomac `at` pacific `dot` net `dot` au A value of type   r a! is a mutable variable in region r,  containing a value of type a. !" Create a new   in region r. Read the value of an  . Write a new value into an  . Mutate the contents of an  .    #      !"#$%&'()IOR-0.1System.IOR.Resource System.IOR Data.IORRefSystem.IOR.InternalResource getResourceIORTagIORRNilRConsRElemrunIORnewIOR getIORTag withIORTagmanagereleaseIORRef newIORRef readIORRef writeIORRef modifyIORRef Resource'idTagtagRef finalizerunIORTagIdTagghc-prim GHC.TypesIO mtl-1.1.1.0Control.Monad.TransliftIObaseGHC.IO.ExceptionIOErrorunIORrununIORRef