packages feed

managed 1.0.6 → 1.0.11

raw patch · 4 files changed

Files

LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2014 Gabriel Gonzalez+Copyright (c) 2014 Gabriella Gonzalez All rights reserved.  Redistribution and use in source and binary forms, with or without modification,@@ -8,7 +8,7 @@     * Redistributions in binary form must reproduce the above copyright notice,       this list of conditions and the following disclaimer in the documentation       and/or other materials provided with the distribution.-    * Neither the name of Gabriel Gonzalez nor the names of other contributors+    * Neither the name of Gabriella Gonzalez nor the names of other contributors       may be used to endorse or promote products derived from this software       without specific prior written permission. 
managed.cabal view
@@ -1,14 +1,22 @@ Name: managed-Version: 1.0.6-Cabal-Version: >=1.8.0.2+Version: 1.0.11+Cabal-Version: >=1.10 Build-Type: Simple License: BSD3 License-File: LICENSE-Copyright: 2014 Gabriel Gonzalez-Author: Gabriel Gonzalez-Maintainer: Gabriel439@gmail.com-Tested-With: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1-Bug-Reports: https://github.com/Gabriel439/Haskell-Managed-Library/issues+Copyright: 2014 Gabriella Gonzalez+Author: Gabriella Gonzalez+Maintainer: GenuineGabriella@gmail.com+Tested-With:+    GHC == 9.2.1+    GHC == 9.0.1+    GHC == 8.10.7+    GHC == 8.8.4+    GHC == 8.6.5+    GHC == 8.4.4+    GHC == 8.2.2+    GHC == 8.0.2+Bug-Reports: https://github.com/Gabriella439/managed/issues Synopsis: A monad for managed values Description: In Haskell you very often acquire values using the @with...@   idiom using functions of type @(a -> IO r) -> IO r@.  This idiom forms a@@ -28,17 +36,15 @@ Category: Control Source-Repository head     Type: git-    Location: https://github.com/Gabriel439/Haskell-Managed-Library+    Location: https://github.com/Gabriella439/managed  Library     Hs-Source-Dirs: src     Build-Depends:-        base              >= 4.5     && < 5  ,-        transformers      >= 0.2.0.0 && < 0.6-    if !impl(ghc >= 8.0)-      Build-Depends:-        semigroups        >= 0.16    && < 0.19+        base              >= 4.9     && < 5  ,+        transformers      >= 0.2.0.0 && < 0.7     Exposed-Modules:         Control.Monad.Managed,         Control.Monad.Managed.Safe     GHC-Options: -Wall+    Default-Language: Haskell2010
src/Control/Monad/Managed.hs view
@@ -99,6 +99,7 @@     MonadManaged(..),     managed,     managed_,+    defer,     with,     runManaged, @@ -108,14 +109,10 @@     ) where  import Control.Monad.IO.Class (MonadIO(liftIO))+import Control.Monad.Fail as MonadFail (MonadFail(..)) import Control.Monad.Trans.Class (lift) -#if MIN_VERSION_base(4,8,0) import Control.Applicative (liftA2)-#else-import Control.Applicative-import Data.Monoid (Monoid(..))-#endif  #if !(MIN_VERSION_base(4,11,0)) import Data.Semigroup (Semigroup(..))@@ -153,9 +150,6 @@         return_ (f x) )  instance Monad Managed where-    return r = Managed (\return_ ->-        return_ r )-     ma >>= f = Managed (\return_ ->         ma  >>- \a ->         f a >>- \b ->@@ -166,6 +160,11 @@         a <- m         return_ a ) +instance MonadFail Managed where+    fail s = Managed (\return_ -> do+        a <- MonadFail.fail s+        return_ a )+ instance Semigroup a => Semigroup (Managed a) where     (<>) = liftA2 (<>) @@ -261,13 +260,24 @@     using m = lift (using m)  -- | Build a `Managed` value-managed :: (forall r . (a -> IO r) -> IO r) -> Managed a-managed = Managed+managed :: MonadManaged m => (forall r . (a -> IO r) -> IO r) -> m a+managed f = using (Managed f)  -- | Like 'managed' but for resource-less operations.-managed_ :: (forall r. IO r -> IO r) -> Managed ()+managed_ :: MonadManaged m => (forall r. IO r -> IO r) -> m () managed_ f = managed $ \g -> f $ g () +{-| Defer running an action until exit (via `runManaged`).++For example, the following code will print \"Hello\" followed by \"Goodbye\":++> runManaged $ do+>   defer $ liftIO $ putStrLn "Goodbye"+>   liftIO $ putStrLn "Hello"+-}+defer :: MonadManaged m => IO r -> m ()+defer m = managed_ (<* m)+ {-| Acquire a `Managed` value      This is a potentially unsafe function since it allows a resource to escape@@ -293,7 +303,7 @@     a value that is not a resource being managed. -} with :: Managed a -> (a -> IO r) -> IO r-with = (>>-)+with m = (>>-) m  -- | Run a `Managed` computation, enforcing that no acquired resources leak runManaged :: Managed () -> IO ()
src/Control/Monad/Managed/Safe.hs view
@@ -20,6 +20,7 @@     MonadManaged(..),     managed,     managed_,+    defer,     runManaged,      -- * Re-exports@@ -29,7 +30,7 @@  import Control.Monad.IO.Class (MonadIO(liftIO)) import Control.Monad.Managed-    (Managed, MonadManaged(..), managed, managed_, runManaged)+    (Managed, MonadManaged(..), defer, managed, managed_, runManaged)  {- $reexports     "Control.Monad.IO.Class" re-exports 'MonadIO'