| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Managed
Contents
Managed
A managed resource that you acquire using with
Instances
with :: Managed a -> (a -> IO r) -> IO r #
Acquire a Managed value
This is a potentially unsafe function since it allows a resource to escape
its scope. For example, you might use Managed to safely acquire a
file handle, like this:
import qualified System.IO as IO example :: Managed Handle example = managed (IO.withFile "foo.txt" IO.ReadMode)
... and if you never used the with function then you would never run the
risk of accessing the Handle after the file was closed. However, if you
use with then you can incorrectly access the handle after the handle is
closed, like this:
bad :: IO ()
bad = do
handle <- with example return
IO.hPutStrLn handle "bar" -- This will fail because the handle is closed... so only use with if you know what you are doing and you're returning
a value that is not a resource being managed.
runManaged :: Managed () -> IO () #
Run a Managed computation, enforcing that no acquired resources leak
MonadManaged
class MonadIO m => MonadManaged (m :: * -> *) where #
You can embed a Managed action within any Monad that implements
MonadManaged by using the using function
All instances must obey the following two laws:
using (return x) = return x using (m >>= f) = using m >>= \x -> using (f x)
Minimal complete definition
Instances
| MonadManaged Managed | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (MaybeT m) | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (IdentityT m) | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (ExceptT e m) | |
Defined in Control.Monad.Managed | |
| (Monoid w, MonadManaged m) => MonadManaged (WriterT w m) | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (StateT s m) | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (StateT s m) | |
Defined in Control.Monad.Managed | |
| (Monoid w, MonadManaged m) => MonadManaged (WriterT w m) | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (ReaderT r m) | |
Defined in Control.Monad.Managed | |
| MonadManaged m => MonadManaged (ContT r m) | |
Defined in Control.Monad.Managed | |
| (Monoid w, MonadManaged m) => MonadManaged (RWST r w s m) | |
Defined in Control.Monad.Managed | |
| (Monoid w, MonadManaged m) => MonadManaged (RWST r w s m) | |
Defined in Control.Monad.Managed | |