@@ -76,6 +76,14 @@ takeWhile value = IP.parse (PR.takeWhile (<= value) FL.drain)
76groupBy :: MonadCatch m => SerialT m Int -> m ()
76groupBy :: MonadCatch m => SerialT m Int -> m ()
77groupBy = IP.parse (PR.groupBy (<=) FL.drain)
77groupBy = IP.parse (PR.groupBy (<=) FL.drain)
80+wordBy :: MonadCatch m => Int -> SerialT m Int -> m ()
81+wordBy value = IP.parse (PR.wordBy (>= value) FL.drain)
83+{-# INLINE manyWordByEven #-}
84+manyWordByEven :: MonadCatch m => SerialT m Int -> m ()
85+manyWordByEven = IP.parse (PR.many FL.drain (PR.wordBy (Prelude.even) FL.drain))
79{-# INLINE many #-}
87{-# INLINE many #-}
80many :: MonadCatch m => SerialT m Int -> m Int
88many :: MonadCatch m => SerialT m Int -> m Int
81many = IP.parse (PR.many FL.length (PR.satisfy (> 0)))
89many = IP.parse (PR.many FL.length (PR.satisfy (> 0)))
@@ -263,11 +271,13 @@ o_1_space_serial value =
263 , benchIOSink value "takeWhile" $ takeWhile value
271 , benchIOSink value "takeWhile" $ takeWhile value
264 , benchIOSink value "drainWhile" $ drainWhile value
272 , benchIOSink value "drainWhile" $ drainWhile value
265 , benchIOSink value "groupBy" $ groupBy
273 , benchIOSink value "groupBy" $ groupBy
274+ , benchIOSink value "wordBy" $ wordBy value
266 , benchIOSink value "splitAp" $ splitAp value
275 , benchIOSink value "splitAp" $ splitAp value
267 , benchIOSink value "splitApBefore" $ splitApBefore value
276 , benchIOSink value "splitApBefore" $ splitApBefore value
268 , benchIOSink value "splitApAfter" $ splitApAfter value
277 , benchIOSink value "splitApAfter" $ splitApAfter value
269 , benchIOSink value "splitWith" $ splitWith value
278 , benchIOSink value "splitWith" $ splitWith value
270 , benchIOSink value "many" many
279 , benchIOSink value "many" many
280+ , benchIOSink value "many (wordBy even)" $ manyWordByEven
271 , benchIOSink value "some" some
281 , benchIOSink value "some" some
272 , benchIOSink value "manyTill" $ manyTill value
282 , benchIOSink value "manyTill" $ manyTill value
273 , benchIOSink value "tee" $ teeAllAny value
283 , benchIOSink value "tee" $ teeAllAny value