@@ -336,13 +336,21 @@ module Streamly.Prelude
336336
337337 -- ** Stateful Filters
338338 , take
339+ -- , takeEnd
339340 , takeWhile
340341 , takeWhileM
342+ -- , takeWhileEnd
341343 , drop
344+ -- , dropEnd
342345 , dropWhile
343346 , dropWhileM
347+ -- , dropWhileEnd
348+ -- , dropAround
344349 , deleteBy
345350 , uniq
351+ -- , uniqBy -- by predicate e.g. to remove duplicate "/" in a path
352+ -- , uniqOn -- to remove duplicate sequences
353+ -- , pruneBy -- dropAround + uniqBy - like words
346354
347355 -- ** Mapping Filters
348356 -- | Mapping along with filtering
@@ -390,6 +398,8 @@ module Streamly.Prelude
390398
391399 , concatMapM
392400 , concatMap
401+ -- , interposeBy
402+ -- , intercalate
393403
394404 -- * Multi-Stream Operations
395405 -- | New streams can be constructed by appending, merging or zipping
@@ -448,8 +458,12 @@ module Streamly.Prelude
448458 , eqBy
449459 , cmpBy
450460 , isPrefixOf
461+ -- , isSuffixOf
462+ -- , isInfixOf
451463 , isSubsequenceOf
452464 , stripPrefix
465+ -- , stripSuffix
466+ -- , stripInfix
453467
454468 -- * Deprecated
455469 , K.once
@@ -946,11 +960,16 @@ foldrM = P.foldrM
946960
947961-- | Right fold to a streaming monad.
948962--
963+-- > foldrS S.cons S.nil === id
964+--
949965-- 'foldrS' can be used to perform stateless stream to stream transformations
950966-- like map and filter in general. It can be coupled with a scan to perform
951967-- stateful transformations. However, note that the custom map and filter
952968-- routines can be much more efficient than this due to better stream fusion.
953969--
970+-- >>> S.toList $ S.foldrS S.cons S.nil $ S.fromList [1..5]
971+-- > [1,2,3,4,5]
972+--
954973-- Find if any element in the stream is 'True':
955974--
956975-- >>> S.toList $ S.foldrS (\x xs -> if odd x then return True else xs) (return False) $ (S.fromList (2:4:5:undefined) :: SerialT IO Int)
@@ -2095,3 +2114,12 @@ concatMap f m = fromStreamD $ D.concatMap (toStreamD . f) (toStreamD m)
20952114{-# INLINE concatMapM #-}
20962115concatMapM :: (IsStream t, Monad m) => (a -> m (t m b)) -> t m a -> t m b
20972116concatMapM f m = fromStreamD $ D.concatMapM (fmap toStreamD . f) (toStreamD m)
2117+
2118+{-
2119+-- | A generalization of insertBy to inserting sequences.
2120+interposeBy :: (IsStream t, Monad m)
2121+ => (a -> a -> Ordering) -> t m a -> t m a -> t m a
2122+
2123+-- | A generalization of intersperseM to intersperse sequences.
2124+intercalate :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
2125+-}