@@ -74,6 +74,16 @@ benchIOSink value name f =
75-------------------------------------------------------------------------------
75-------------------------------------------------------------------------------
78+next :: MonadCatch m => Int -> SerialT m Int -> m (Maybe Int)
79+next value = IP.parse p
84+ Just i -> if i >= value then pure m else p
85+ Nothing -> pure Nothing
77{-# INLINE takeBetween #-}
87{-# INLINE takeBetween #-}
78takeBetween :: MonadCatch m => Int -> SerialT m a -> m ()
88takeBetween :: MonadCatch m => Int -> SerialT m a -> m ()
79takeBetween value = IP.parse (PR.takeBetween 0 value FL.drain)
89takeBetween value = IP.parse (PR.takeBetween 0 value FL.drain)
@@ -334,7 +344,8 @@ moduleName = "Data.Parser"
335o_1_space_serial :: Int -> [Benchmark]
345o_1_space_serial :: Int -> [Benchmark]
336o_1_space_serial value =
346o_1_space_serial value =
347+ [ benchIOSink value "next" $ next value
337− [ benchIOSink value "takeBetween" $ takeBetween value
348+ , benchIOSink value "takeBetween" $ takeBetween value
338 , benchIOSink value "takeEQ" $ takeEQ value
349 , benchIOSink value "takeEQ" $ takeEQ value
339 , benchIOSink value "takeWhile" $ takeWhile value
350 , benchIOSink value "takeWhile" $ takeWhile value
340 , benchIOSink value "takeP" $ takeP value
351 , benchIOSink value "takeP" $ takeP value