packages feed

polysemy-kvstore 0.1.2.0 → 0.1.3.0

raw patch · 2 files changed

+31/−28 lines, 2 filesdep ~basedep ~containersdep ~polysemyPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base, containers, polysemy

API changes (from Hackage documentation)

- Polysemy.KVStore: lookupKV :: forall k_a4kx v_a4ky r_a5JD. MemberWithError (KVStore k_a4kx v_a4ky) r_a5JD => k_a4kx -> Sem r_a5JD (Maybe v_a4ky)
+ Polysemy.KVStore: lookupKV :: forall k_a4mt v_a4mu r_a5L5. Member (KVStore k_a4mt v_a4mu) r_a5L5 => k_a4mt -> Sem r_a5L5 (Maybe v_a4mu)
- Polysemy.KVStore: updateKV :: forall k_a4kW v_a4kX r_a5JF. MemberWithError (KVStore k_a4kW v_a4kX) r_a5JF => k_a4kW -> Maybe v_a4kX -> Sem r_a5JF ()
+ Polysemy.KVStore: updateKV :: forall k_a4mS v_a4mT r_a5L7. Member (KVStore k_a4mS v_a4mT) r_a5L7 => k_a4mS -> Maybe v_a4mT -> Sem r_a5L7 ()

Files

polysemy-kvstore.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.34.7. -- -- see: https://github.com/sol/hpack  name:           polysemy-kvstore-version:        0.1.2.0+version:        0.1.3.0 synopsis:       KVStore effect for polysemy. description:    KVStore effect for polysemy. category:       Polysemy@@ -21,7 +21,7 @@  source-repository head   type: git-  location: https://gitlab.com/homotopic-tech/polysemy-kvstore+  location: https://gitlab.homotopic.tech/haskell/polysemy-kvstore  library   exposed-modules:@@ -30,9 +30,9 @@       Paths_polysemy_kvstore   hs-source-dirs:       src-  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints+  ghc-options: -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module -Wno-orphans -Wno-safe -Wno-unsafe   build-depends:-      base >=4.7 && <5-    , containers-    , polysemy >=1.3.0.0 && <1.7+      base >=4.9 && <5+    , containers >=0.5 && <0.7+    , polysemy >=1.3.0.0 && <1.8   default-language: Haskell2010
src/Polysemy/KVStore.hs view
@@ -1,15 +1,15 @@-{-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE BlockArguments #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE ExplicitForAll #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE PolyKinds #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE TypeApplications #-}-{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE AllowAmbiguousTypes      #-}+{-# LANGUAGE BlockArguments           #-}+{-# LANGUAGE DataKinds                #-}+{-# LANGUAGE FlexibleContexts         #-}+{-# LANGUAGE GADTs                    #-}+{-# LANGUAGE LambdaCase               #-}+{-# LANGUAGE PolyKinds                #-}+{-# LANGUAGE ScopedTypeVariables      #-}+{-# LANGUAGE StandaloneKindSignatures #-}+{-# LANGUAGE TemplateHaskell          #-}+{-# LANGUAGE TypeApplications         #-}+{-# LANGUAGE TypeOperators            #-}  module Polysemy.KVStore   ( -- * Effect@@ -24,7 +24,7 @@     updateKV,     modifyKV, -    -- * Interpretations+    -- * Interpreters     runKVStoreAsState,     runKVStorePure,     runKVStoreAsKVStore,@@ -32,14 +32,17 @@   ) where -import qualified Data.Map as M-import Data.Maybe (isJust)-import Polysemy-import Polysemy.Error-import Polysemy.State+import           Data.Kind      (Type)+import qualified Data.Map       as M+import           Data.Maybe     (isJust)+import           Polysemy       (Member, Members, Sem, interpret, makeSem,+                                 reinterpret)+import           Polysemy.Error (Error, fromEither)+import           Polysemy.State (State, gets, modify, runState)  -- | Models things like Redis, HTTP GET/POST, etc. Things that are keyed, have -- a value, and may or may not be there.+type KVStore :: Type -> Type -> (Type -> Type) -> Type -> Type data KVStore k v m a where   LookupKV :: k -> KVStore k v m (Maybe v)   UpdateKV :: k -> Maybe v -> KVStore k v m ()@@ -93,7 +96,7 @@   Sem r () modifyKV d f k =   lookupKV k >>= \case-    Just v -> writeKV k $ f v+    Just v  -> writeKV k $ f v     Nothing -> writeKV k $ f d  -- | Run a `KVStore` as a `State` effect containing a `Map`.@@ -101,7 +104,7 @@ -- @since 0.1.0.0 runKVStoreAsState :: Ord k => Sem (KVStore k v ': r) a -> Sem (State (M.Map k v) ': r) a runKVStoreAsState = reinterpret $ \case-  LookupKV k -> gets $ M.lookup k+  LookupKV k   -> gets $ M.lookup k   UpdateKV k v -> modify $ M.alter (const v) k {-# INLINE runKVStoreAsState #-} @@ -131,7 +134,7 @@   Sem (KVStore k v ': r) a ->   Sem (KVStore k' v' ': r) a runKVStoreAsKVStore f g h = reinterpret \case-  LookupKV k -> fmap h <$> lookupKV @k' @v' (f k)+  LookupKV k   -> fmap h <$> lookupKV @k' @v' (f k)   UpdateKV k x -> updateKV @k' @v' (f k) (fmap g x) {-# INLINE runKVStoreAsKVStore #-}