@@ -20,6 +20,7 @@ module Reflex.EventWriter
2020 , EventWriter (..)
2121 , runWithReplaceEventWriterTWith
2222 , sequenceDMapWithAdjustEventWriterTWith
23+ , withEventWriterT
2324 ) where
2425
2526import Reflex.Class
@@ -267,3 +268,16 @@ instance (MonadQuery t q m, Monad m) => MonadQuery t q (EventWriterT t w m) wher
267268 tellQueryIncremental = lift . tellQueryIncremental
268269 askQueryResult = lift askQueryResult
269270 queryIncremental = lift . queryIncremental
271+
272+-- | Map a function over the output of a 'EventWriterT'.
273+withEventWriterT :: (Semigroup w, Semigroup w', Reflex t, MonadHold t m, MonadFix m)
274+ => (w -> w')
275+ -> EventWriterT t w m a
276+ -> EventWriterT t w' m a
277+withEventWriterT f ew = do
278+ (r, e) <- lift $ do
279+ (r, e) <- runEventWriterT ew
280+ let e' = fmap f e
281+ return (r, e')
282+ tellEvent e
283+ return r