@@ -19,6 +19,7 @@ module Reflex.EventWriter
1919 , EventWriter (..)
2020 , runWithReplaceEventWriterTWith
2121 , sequenceDMapWithAdjustEventWriterTWith
22+ , withEventWriterT
2223 ) where
2324
2425import Reflex.Class
@@ -176,3 +177,16 @@ instance (MonadQuery t q m, Monad m) => MonadQuery t q (EventWriterT t w m) wher
176177 tellQueryIncremental = lift . tellQueryIncremental
177178 askQueryResult = lift askQueryResult
178179 queryIncremental = lift . queryIncremental
180+
181+-- | Map a function over the output of a 'EventWriterT'.
182+withEventWriterT :: (Monoid w, Monoid w', Reflex t, MonadHold t m, MonadFix m)
183+ => (w -> w')
184+ -> EventWriterT t w m a
185+ -> EventWriterT t w' m a
186+withEventWriterT f ew = do
187+ (r, e) <- lift $ do
188+ (r, e) <- runEventWriterT ew
189+ let e' = fmap f e
190+ return (r, e')
191+ tellEvent e
192+ return r