higher-leveldb 0.5.0.2 → 0.6.0.0
raw patch · 2 files changed
+4/−26 lines, 2 filesdep ~resourcetdep ~unliftio-core
Dependency ranges changed: resourcet, unliftio-core
Files
- higher-leveldb.cabal +2/−2
- src/Database/LevelDB/Higher.hs +2/−24
higher-leveldb.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: higher-leveldb-version: 0.5.0.2+version: 0.6.0.0 synopsis: A rich monadic API for working with leveldb databases. description: A rich monadic API for working with leveldb databases. homepage: https://github.com/jeremyjh/higher-leveldb@@ -35,7 +35,7 @@ , resourcet >= 1.2.0 && <= 1.3 , transformers >= 0.3 && < 0.6 , transformers-base >= 0.4.1 && < 0.5- , unliftio-core >= 0.1 && < 0.2+ , unliftio-core >= 0.1 && < 0.3 test-suite spec
src/Database/LevelDB/Higher.hs view
@@ -69,12 +69,10 @@ import Data.Default (def) import qualified Database.LevelDB as LDB import Database.LevelDB- hiding (put, get, delete, write, withSnapshot)+ hiding (put, get, delete, withSnapshot) import Control.Monad.Trans.Resource import Control.Monad.Catch (MonadCatch (..) , MonadMask (..))-import Control.Monad.IO.Unlift- #if MIN_VERSION_mtl(2,2,1) import qualified Control.Monad.Except as Except #else@@ -83,7 +81,6 @@ import qualified Control.Monad.Trans.Cont as Cont import qualified Control.Monad.Trans.Identity as Identity-import qualified Control.Monad.Trans.List as List import qualified Control.Monad.Trans.Maybe as Maybe import qualified Control.Monad.Trans.State as State import qualified Control.Monad.Trans.Writer as Writer@@ -144,7 +141,7 @@ -- If you aren't building a custom monad stack you can just use the 'LevelDB' alias. newtype LevelDBT m a = LevelDBT { unLevelDBT :: ReaderT DBContext (ResourceT m) a }- deriving ( Functor, Applicative, Monad, MonadIO, MonadThrow)+ deriving ( Functor, Applicative, Monad, MonadIO, MonadThrow, MonadUnliftIO, MonadMask) instance (MonadBase b m) => MonadBase b (LevelDBT m) where liftBase = lift . liftBase@@ -159,24 +156,6 @@ catch (LevelDBT m) c = LevelDBT . ReaderT $ \r -> runReaderT m r `catch` \e -> runReaderT (unLevelDBT (c e)) r -instance MonadMask m => MonadMask (LevelDBT m) where- mask a = LevelDBT . ReaderT $ \e -> mask $ \u -> runReaderT (unLevelDBT (a $ q u)) e- where- q :: (ResourceT m a -> ResourceT m a) -> LevelDBT m a -> LevelDBT m a- q u (LevelDBT (ReaderT b)) =- LevelDBT $ ReaderT (u . b)- uninterruptibleMask a =- LevelDBT . ReaderT $ \e -> uninterruptibleMask $ \u -> runReaderT (unLevelDBT (a $ q u)) e- where- q :: (ResourceT m a -> ResourceT m a) -> LevelDBT m a -> LevelDBT m a- q u (LevelDBT (ReaderT b)) =- LevelDBT $ ReaderT (u . b)--instance MonadUnliftIO m => MonadUnliftIO (LevelDBT m) where- askUnliftIO = LevelDBT $- withUnliftIO $ \u ->- return (UnliftIO (unliftIO u . unLevelDBT))- -- | MonadLevelDB class used by all the public functions in this module. class ( Monad m , MonadThrow m@@ -204,7 +183,6 @@ INST(Monad m,ReaderT r, mapReaderT) --Monad m is a no-op to save another define INST(Monad m,Maybe.MaybeT, Maybe.mapMaybeT) INST(Monad m,Identity.IdentityT, Identity.mapIdentityT)-INST(Monad m,List.ListT, List.mapListT) INST(Monad m,Cont.ContT r, Cont.mapContT) INST(Monad m,State.StateT s, State.mapStateT ) INST(Monad m,Strict.StateT s, Strict.mapStateT )