@@ -979,10 +979,15 @@ mapMaybe f m = fromStreamS $ S.mapMaybe f $ toStreamS m
979979-- /Concurrent (do not use with 'parallely' on infinite streams)/
980980--
981981-- @since 0.3.0
982−{-# INLINE mapMaybeM #-}
982+{-# INLINE_EARLY mapMaybeM #-}
983983mapMaybeM :: (IsStream t, MonadAsync m, Functor (t m))
984984 => (a -> m (Maybe b)) -> t m a -> t m b
985−mapMaybeM f = fmap fromJust . filter isJust . mapM f
985+mapMaybeM f = fmap fromJust . filter isJust . K.mapM f
986+
987+{-# RULES "mapMaybeM serial" mapMaybeM = mapMaybeMSerial #-}
988+{-# INLINE mapMaybeMSerial #-}
989+mapMaybeMSerial :: Monad m => (a -> m (Maybe b)) -> SerialT m a -> SerialT m b
990+mapMaybeMSerial f m = fromStreamD $ D.mapMaybeM f $ toStreamD m
986991
987992------------------------------------------------------------------------------
988993-- Transformation by Reordering