@@ -638,6 +638,8 @@ instance Reflex t => Bind (Event t) where
638638instance Reflex t => Functor (Event t) where
639639 {-# INLINE fmap #-}
640640 fmap f = fmapMaybe $ Just . f
641+ {-# INLINE (<$) #-}
642+ x <$ e = fmapCheap (const x) e
641643
642644instance Reflex t => FunctorMaybe (Event t) where
643645 {-# INLINE fmapMaybe #-}
@@ -956,12 +958,16 @@ mapAccumMaybeMDyn f z e = do
956958 d' <- holdDyn z $ fmapMaybe fst e'
957959 return (d', fmapMaybe snd e')
958960
961+{-# INLINE accumB #-}
959962accumB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> a) -> a -> Event t b -> m (Behavior t a)
960963accumB f = accumMaybeB $ \v o -> Just $ f v o
964+{-# INLINE accumMB #-}
961965accumMB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t a) -> a -> Event t b -> m (Behavior t a)
962966accumMB f = accumMaybeMB $ \v o -> Just <$> f v o
967+{-# INLINE accumMaybeB #-}
963968accumMaybeB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> Maybe a) -> a -> Event t b -> m (Behavior t a)
964969accumMaybeB f = accumMaybeMB $ \v o -> return $ f v o
970+{-# INLINE accumMaybeMB #-}
965971accumMaybeMB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t (Maybe a)) -> a -> Event t b -> m (Behavior t a)
966972accumMaybeMB f z e = do
967973 rec let e' = flip push e $ \o -> do
@@ -969,14 +975,17 @@ accumMaybeMB f z e = do
969975 f v o
970976 d' <- hold z e'
971977 return d'
978+{-# INLINE mapAccumB #-}
972979mapAccumB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> (a, c)) -> a -> Event t b -> m (Behavior t a, Event t c)
973980mapAccumB f = mapAccumMaybeB $ \v o -> bimap Just Just $ f v o
981+{-# INLINE mapAccumMB #-}
974982mapAccumMB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t (a, c)) -> a -> Event t b -> m (Behavior t a, Event t c)
975983mapAccumMB f = mapAccumMaybeMB $ \v o -> bimap Just Just <$> f v o
984+{-# INLINE mapAccumMaybeB #-}
976985mapAccumMaybeB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> (Maybe a, Maybe c)) -> a -> Event t b -> m (Behavior t a, Event t c)
977986mapAccumMaybeB f = mapAccumMaybeMB $ \v o -> return $ f v o
978987
979−{-# INLINABLE mapAccumMaybeMB #-}
988+{-# INLINE mapAccumMaybeMB #-}
980989mapAccumMaybeMB :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t (Maybe a, Maybe c)) -> a -> Event t b -> m (Behavior t a, Event t c)
981990mapAccumMaybeMB f z e = do
982991 rec let e' = flip push e $ \o -> do
@@ -990,6 +999,7 @@ mapAccumMaybeMB f z e = do
990999
9911000-- | Accumulate occurrences of an 'Event', producing an output occurrence each
9921001-- time. Discard the underlying 'Accumulator'.
1002+{-# INLINE mapAccum_ #-}
9931003mapAccum_ :: forall t m a b c. (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> (a, c)) -> a -> Event t b -> m (Event t c)
9941004mapAccum_ f z e = do
9951005 (_, result) <- mapAccumB f z e
@@ -997,6 +1007,7 @@ mapAccum_ f z e = do
9971007
9981008-- | Accumulate occurrences of an 'Event', possibly producing an output
9991009-- occurrence each time. Discard the underlying 'Accumulator'.
1010+{-# INLINE mapAccumMaybe_ #-}
10001011mapAccumMaybe_ :: forall t m a b c. (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> (Maybe a, Maybe c)) -> a -> Event t b -> m (Event t c)
10011012mapAccumMaybe_ f z e = do
10021013 (_, result) <- mapAccumMaybeB f z e
@@ -1004,6 +1015,7 @@ mapAccumMaybe_ f z e = do
10041015
10051016-- | Accumulate occurrences of an 'Event', using a 'PushM' action and producing
10061017-- an output occurrence each time. Discard the underlying 'Accumulator'.
1018+{-# INLINE mapAccumM_ #-}
10071019mapAccumM_ :: forall t m a b c. (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t (a, c)) -> a -> Event t b -> m (Event t c)
10081020mapAccumM_ f z e = do
10091021 (_, result) <- mapAccumMB f z e
@@ -1012,6 +1024,7 @@ mapAccumM_ f z e = do
10121024-- | Accumulate occurrences of an 'Event', using a 'PushM' action and possibly
10131025-- producing an output occurrence each time. Discard the underlying
10141026-- 'Accumulator'.
1027+{-# INLINE mapAccumMaybeM_ #-}
10151028mapAccumMaybeM_ :: forall t m a b c. (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> PushM t (Maybe a, Maybe c)) -> a -> Event t b -> m (Event t c)
10161029mapAccumMaybeM_ f z e = do
10171030 (_, result) <- mapAccumMaybeMB f z e
@@ -1040,14 +1053,17 @@ zipListWithEvent f l e = do
10401053 mapAccumMaybe_ f' l e
10411054
10421055-- | Assign a number to each occurence of the given 'Event', starting from 0
1056+{-# INLINE numberOccurrences #-}
10431057numberOccurrences :: (Reflex t, MonadHold t m, MonadFix m, Num b) => Event t a -> m (Event t (b, a))
10441058numberOccurrences = numberOccurrencesFrom 0
10451059
10461060-- | Assign a number to each occurence of the given 'Event'
1061+{-# INLINE numberOccurrencesFrom #-}
10471062numberOccurrencesFrom :: (Reflex t, MonadHold t m, MonadFix m, Num b) => b -> Event t a -> m (Event t (b, a))
10481063numberOccurrencesFrom = mapAccum_ (\n a -> (n + 1, (n, a)))
10491064
10501065-- | Assign a number to each occurence of the given 'Event'; discard the occurrences' values
1066+{-# INLINE numberOccurrencesFrom_ #-}
10511067numberOccurrencesFrom_ :: (Reflex t, MonadHold t m, MonadFix m, Num b) => b -> Event t a -> m (Event t b)
10521068numberOccurrencesFrom_ = mapAccum_ (\n _ -> (n + 1, n))
10531069