on develop help sign in
Add `mapEventWriterT`
0cebaaeRyan Trinkle
src/Reflex/EventWriter/Base.hs+8
@@ -18,6 +18,7 @@ module Reflex.EventWriter.Base
18 , runEventWriterT
18 , runEventWriterT
19 , runWithReplaceEventWriterTWith
19 , runWithReplaceEventWriterTWith
20 , sequenceDMapWithAdjustEventWriterTWith
20 , sequenceDMapWithAdjustEventWriterTWith
21+ , mapEventWriterT
21 , withEventWriterT
22 , withEventWriterT
22 ) where
23 ) where
23
24
@@ -279,3 +280,10 @@ withEventWriterT f ew = do
279 return (r, e')
280 return (r, e')
280 tellEvent e
281 tellEvent e
281 return r
282 return r
283+
284+-- | Change the monad underlying an EventWriterT
285+mapEventWriterT :: (Semigroup w, Reflex t, MonadHold t m, MonadFix m)
286+ => (forall x. m x -> n x)
287+ -> EventWriterT t w m a
288+ -> EventWriterT t w n a
289+mapEventWriterT f (EventWriterT a) = EventWriterT $ mapStateT f a