From 26b0894879b5307660a143f9885c00a06773b235 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Tue, 6 Oct 2020 23:50:42 +0200 Subject: [PATCH] Move GetT to Qd.Utils.GetT to implement `lookupInsert` --- src/lib/Qd/Observable/ObservableMap.hs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/lib/Qd/Observable/ObservableMap.hs b/src/lib/Qd/Observable/ObservableMap.hs index 52bb5ef..2eb8adb 100644 --- a/src/lib/Qd/Observable/ObservableMap.hs +++ b/src/lib/Qd/Observable/ObservableMap.hs @@ -10,10 +10,9 @@ module Qd.Observable.ObservableMap ( ) where import Qd.Observable +import Qd.Utils.GetT import Control.Concurrent.MVar -import Data.Bifunctor -import Data.Hashable (Hashable) import qualified Data.HashMap.Strict as HM import Data.Unique import Prelude hiding (lookup, lookupDelete) @@ -25,14 +24,6 @@ data ObservableValue v = ObservableValue { subscribers :: (HM.HashMap Unique (ObservableMessage v -> IO ())) } -newtype GetT s m r = GetT { - runGetT :: m (r, s) -} -instance Functor m => Functor (GetT s m) where - fmap :: (a -> b) -> (GetT s m) a -> (GetT s m) b - fmap fn = GetT . fmap (first fn) . runGetT - - modifyValue :: forall k v a. (Eq k, Hashable k) => (ObservableValue v -> IO (ObservableValue v, a)) -> k -> ObservableMap k v -> IO a modifyValue f k (ObservableMap mvar) = modifyMVar mvar $ \hashmap -> runGetT (HM.alterF update k hashmap) where -- GitLab