@@ -1,8 +1,5 @@
1−-- | This module defines 'MonadDynamicWriter' and 'DynamicWriterT', its standard
3{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
4{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE FlexibleInstances #-}
5−{-# LANGUAGE FunctionalDependencies #-}
6{-# LANGUAGE GADTs #-}
3{-# LANGUAGE GADTs #-}
7{-# LANGUAGE GeneralizedNewtypeDeriving #-}
4{-# LANGUAGE GeneralizedNewtypeDeriving #-}
8{-# LANGUAGE LambdaCase #-}
5{-# LANGUAGE LambdaCase #-}
@@ -14,9 +11,8 @@
14#ifdef USE_REFLEX_OPTIMIZER
11#ifdef USE_REFLEX_OPTIMIZER
15{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
12{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
17−module Reflex.DynamicWriter
14+module Reflex.DynamicWriter.Base
18− ( MonadDynamicWriter (..)
19− , DynamicWriterT (..)
15+ ( DynamicWriterT (..)
20 , runDynamicWriterT
16 , runDynamicWriterT
21 , withDynamicWriterT
17 , withDynamicWriterT
@@ -40,6 +36,7 @@ import Data.Semigroup
40import Data.Some (Some)
36import Data.Some (Some)
41import Data.These
37import Data.These
42import Reflex.Class
38import Reflex.Class
39+import Reflex.DynamicWriter.Class
43import Reflex.Host.Class
40import Reflex.Host.Class
44import qualified Reflex.Patch.MapWithMove as MapWithMove
41import qualified Reflex.Patch.MapWithMove as MapWithMove
45import Reflex.PerformEvent.Class
42import Reflex.PerformEvent.Class
@@ -75,7 +72,7 @@ mergeDynIncrementalWithMove a = unsafeBuildIncremental (mapM (sample . current)
75 These p_ c -> (unPatchMapWithMove p_, c)
72 These p_ c -> (unPatchMapWithMove p_, c)
76 (pWithNewVals, noLongerMoved) = flip runState [] $ forM p $ MapWithMove.nodeInfoMapMFrom $ \case
73 (pWithNewVals, noLongerMoved) = flip runState [] $ forM p $ MapWithMove.nodeInfoMapMFrom $ \case
77 MapWithMove.From_Insert v -> return $ MapWithMove.From_Insert v
74 MapWithMove.From_Insert v -> return $ MapWithMove.From_Insert v
78− MapWithMove.From_Delete -> return $ MapWithMove.From_Delete
75+ MapWithMove.From_Delete -> return MapWithMove.From_Delete
79 MapWithMove.From_Move k -> case Map.lookup k changed of
76 MapWithMove.From_Move k -> case Map.lookup k changed of
80 Nothing -> return $ MapWithMove.From_Move k
77 Nothing -> return $ MapWithMove.From_Move k
81 Just v -> do
78 Just v -> do
@@ -107,11 +104,6 @@ runDynamicWriterT (DynamicWriterT a) = do
107 (result, ws) <- runStateT a []
104 (result, ws) <- runStateT a []
108 return (result, mconcat $ reverse ws)
105 return (result, mconcat $ reverse ws)
110−-- | 'MonadDynamicWriter' efficiently collects 'Dynamic' values using 'tellDyn'
111−-- and combines them monoidally to provide a 'Dynamic' result.
112−class (Monad m, Monoid w) => MonadDynamicWriter t w m | m -> t w where
113− tellDyn :: Dynamic t w -> m ()
115instance (Monad m, Monoid w, Reflex t) => MonadDynamicWriter t w (DynamicWriterT t w m) where
107instance (Monad m, Monoid w, Reflex t) => MonadDynamicWriter t w (DynamicWriterT t w m) where
116 tellDyn w = DynamicWriterT $ modify (w :)
108 tellDyn w = DynamicWriterT $ modify (w :)
@@ -133,9 +125,6 @@ instance TriggerEvent t m => TriggerEvent t (DynamicWriterT t w m) where
133instance PostBuild t m => PostBuild t (DynamicWriterT t w m) where
125instance PostBuild t m => PostBuild t (DynamicWriterT t w m) where
134 getPostBuild = lift getPostBuild
126 getPostBuild = lift getPostBuild
136−instance MonadDynamicWriter t w m => MonadDynamicWriter t w (ReaderT r m) where
137− tellDyn = lift . tellDyn
139instance MonadState s m => MonadState s (DynamicWriterT t w m) where
128instance MonadState s m => MonadState s (DynamicWriterT t w m) where
140 get = lift get
129 get = lift get
141 put = lift . put
130 put = lift . put