@@ -100,6 +100,10 @@ someAlt xs = do
100 x <- IP.parseD (AP.some (PR.satisfy (> 0))) xs
100 x <- IP.parseD (AP.some (PR.satisfy (> 0))) xs
101 return $ Prelude.length x
101 return $ Prelude.length x
103+{-#INLINE sliceSepBy #-}
104+sliceSepBy :: MonadCatch m => Int -> SerialT m Int -> m ()
105+sliceSepBy value = IP.parseD (PR.sliceSepBy (>= value) (PR.many FL.drain
106+ (PR.satisfy (const True))))
103{-# INLINE manyTill #-}
107{-# INLINE manyTill #-}
104manyTill :: MonadCatch m => Int -> SerialT m Int -> m Int
108manyTill :: MonadCatch m => Int -> SerialT m Int -> m Int
105manyTill value =
109manyTill value =
@@ -214,6 +218,7 @@ o_1_space_serial value =
214 , benchIOSink value "many" many
218 , benchIOSink value "many" many
215 , benchIOSink value "many (wordBy even)" $ manyWordByEven
219 , benchIOSink value "many (wordBy even)" $ manyWordByEven
216 , benchIOSink value "some" some
220 , benchIOSink value "some" some
221+ , benchIOSink value "sliceSepBy" $ sliceSepBy value
217 , benchIOSink value "manyTill" $ manyTill value
222 , benchIOSink value "manyTill" $ manyTill value
218 , benchIOSink value "tee (all,any)" $ teeAllAny value
223 , benchIOSink value "tee (all,any)" $ teeAllAny value
219 , benchIOSink value "teeFst (all,any)" $ teeFstAllAny value
224 , benchIOSink value "teeFst (all,any)" $ teeFstAllAny value