@@ -310,6 +310,7 @@ module Streamly.Data.Stream
310310 -- ** Stateless Filters
311311 -- | 'mapMaybeM' is the most general stateless filtering operation. All
312312 -- other filtering operations can be expressed using it.
313+
313314 -- EXPLANATION:
314315 -- In imperative terms a filter over a stream corresponds to a loop with a
315316 -- @continue@ clause for the cases when the predicate fails.
@@ -318,6 +319,7 @@ module Streamly.Data.Stream
318319 , mapMaybeM
319320 , filter
320321 , filterM
322+ , catMaybes
321323
322324 -- ** Stateful Filters
323325 -- | 'scanMaybe' is the most general stateful filtering operation. The
@@ -387,9 +389,6 @@ module Streamly.Data.Stream
387389 -- element of the input stream generates another stream and then loops over
388390 -- that inner stream as well producing effects and generating a single
389391 -- output stream.
390− -- The 'Monad' instances of different stream types provide a more
391− -- convenient way of writing nested loops. Note that the monad bind
392− -- operation is just @flip concatMap@.
393392 --
394393 -- One dimension loops are just a special case of nested loops. For
395394 -- example, 'concatMap' can degenerate to a simple map operation: