@@ -194,6 +194,12 @@ sepByWords _ = Stream.parse (wrds even Fold.drain)
194194 where
195195 wrds p = PR.sepBy (PR.takeWhile (not . p) Fold.drain) (PR.dropWhile p)
196196
197+{-# INLINE sepByWords1 #-}
198+sepByWords1 :: Monad m => Int -> Stream m Int -> m (Either ParseError ())
199+sepByWords1 _ = Stream.parse (wrds even Fold.drain)
200+ where
201+ wrds p = PR.sepBy1 (PR.takeWhile (not . p) Fold.drain) (PR.dropWhile p)
202+
197203{-# INLINE deintercalate #-}
198204deintercalate :: Monad m => Int -> Stream m Int -> m (Either ParseError ())
199205deintercalate _ = Stream.parse (partition even)
@@ -467,6 +473,7 @@ o_1_space_serial value =
467473 , benchIOSink value "groupByRolling" $ groupByRolling
468474 , benchIOSink value "wordBy" $ wordBy value
469475 , benchIOSink value "sepBy (words)" $ sepByWords value
476+ , benchIOSink value "sepBy1 (words)" $ sepByWords1 value
470477 , benchIOSink value "deintercalate" $ deintercalate value
471478 , benchIOSink value "splitAp" $ splitAp value
472479 , benchIOSink value "splitApBefore" $ splitApBefore value