packages feed

acquire 0.1 → 0.2

raw patch · 4 files changed

+53/−50 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Acquire: Acquire :: (IO (resource, IO ())) -> Acquire resource
- Acquire: instance Control.Monad.IO.Class.MonadIO Acquire.Acquire
- Acquire: instance GHC.Base.Applicative Acquire.Acquire
- Acquire: instance GHC.Base.Functor Acquire.Acquire
- Acquire: instance GHC.Base.Monad Acquire.Acquire
- Acquire: newtype Acquire resource
- Acquire: with :: Acquire resource -> (resource -> IO a) -> IO a
+ Acquire.Acquire: Acquire :: (IO (resource, IO ())) -> Acquire resource
+ Acquire.Acquire: instance Control.Monad.IO.Class.MonadIO Acquire.Acquire.Acquire
+ Acquire.Acquire: instance GHC.Base.Applicative Acquire.Acquire.Acquire
+ Acquire.Acquire: instance GHC.Base.Functor Acquire.Acquire.Acquire
+ Acquire.Acquire: instance GHC.Base.Monad Acquire.Acquire.Acquire
+ Acquire.Acquire: newtype Acquire resource
+ Acquire.IO: acquire :: Acquire resource -> (resource -> IO a) -> IO a

Files

acquire.cabal view
@@ -1,7 +1,7 @@ name:   acquire version:-  0.1+  0.2 synopsis:   Abstraction over management of resources description:@@ -42,7 +42,8 @@   default-language:     Haskell2010   exposed-modules:-    Acquire+    Acquire.Acquire+    Acquire.IO   other-modules:     Acquire.Prelude   build-depends:
− library/Acquire.hs
@@ -1,48 +0,0 @@-module Acquire-(-  Acquire(..),-  with,-)-where--import Acquire.Prelude---{-|-Implementation of http://www.haskellforall.com/2013/06/the-resource-applicative.html--}-newtype Acquire resource =-  Acquire (IO (resource, IO ()))--instance Functor Acquire where-  fmap f (Acquire io) =-    Acquire $ do-      (resource, release) <- io-      return (f resource, release)--instance Applicative Acquire where-  pure resource =-    Acquire (pure (resource, pure ()))-  Acquire io1 <*> Acquire io2 =-    Acquire $ do-      (f, release1) <- io1-      (x, release2) <- onException io2 release1-      return (f x, release2 >> release1)--instance Monad Acquire where-  return = pure-  (>>=) (Acquire io1) k2 =-    Acquire $ do-      (resource1, release1) <- io1-      (resource2, release2) <- case k2 resource1 of Acquire io2 -> onException io2 release1-      return (resource2, release2 >> release1)--instance MonadIO Acquire where-  liftIO io =-    Acquire (fmap (, return ()) io)--with :: Acquire resource -> (resource -> IO a) -> IO a-with (Acquire io) handle =-  do-    (resource, release) <- io-    finally (handle resource) release
+ library/Acquire/Acquire.hs view
@@ -0,0 +1,38 @@+module Acquire.Acquire+where++import Acquire.Prelude+++{-|+Implementation of http://www.haskellforall.com/2013/06/the-resource-applicative.html+-}+newtype Acquire resource =+  Acquire (IO (resource, IO ()))++instance Functor Acquire where+  fmap f (Acquire io) =+    Acquire $ do+      (resource, release) <- io+      return (f resource, release)++instance Applicative Acquire where+  pure resource =+    Acquire (pure (resource, pure ()))+  Acquire io1 <*> Acquire io2 =+    Acquire $ do+      (f, release1) <- io1+      (x, release2) <- onException io2 release1+      return (f x, release2 >> release1)++instance Monad Acquire where+  return = pure+  (>>=) (Acquire io1) k2 =+    Acquire $ do+      (resource1, release1) <- io1+      (resource2, release2) <- case k2 resource1 of Acquire io2 -> onException io2 release1+      return (resource2, release2 >> release1)++instance MonadIO Acquire where+  liftIO io =+    Acquire (fmap (, return ()) io)
+ library/Acquire/IO.hs view
@@ -0,0 +1,12 @@+module Acquire.IO+where++import Acquire.Prelude+import Acquire.Acquire+++acquire :: Acquire resource -> (resource -> IO a) -> IO a+acquire (Acquire io) handle =+  do+    (resource, release) <- io+    finally (handle resource) release