@@ -110,15 +110,17 @@ benchIOSink value name f =
110110-- Parsers
111111-------------------------------------------------------------------------------
112112
113−{-# INLINE next #-}
114−next :: MonadCatch m => Int -> SerialT m Int -> m (Maybe Int)
115−next value = IP.parse p
116− where
117− p = do
118− m <- PR.next
119− case m of
120− Just i -> if i >= value then pure m else p
121− Nothing -> pure Nothing
113+{-# INLINE one #-}
114+one :: MonadCatch m => Int -> SerialT m Int -> m (Maybe Int)
115+one value = IP.parse p
116+
117+ where
118+
119+ p = do
120+ m <- PR.fromFold FL.one
121+ case m of
122+ Just i -> if i >= value then pure m else p
123+ Nothing -> pure Nothing
122124
123125{-# INLINE takeBetween #-}
124126takeBetween :: MonadCatch m => Int -> SerialT m a -> m ()
@@ -411,7 +413,7 @@ moduleName = "Data.Parser"
411413
412414o_1_space_serial :: Int -> [Benchmark]
413415o_1_space_serial value =
414− [ benchIOSink value "next" $ next value
416+ [ benchIOSink value "one (fold)" $ one value
415417 , benchIOSink value "takeBetween" $ takeBetween value
416418 , benchIOSink value "takeEQ" $ takeEQ value
417419 , benchIOSink value "takeWhile" $ takeWhile value