@@ -216,6 +216,13 @@ parseManyGroupsRolling :: MonadThrow m => Bool -> SerialT m Int -> m ()
216216parseManyGroupsRolling b =
217217 IP.drain . IP.parseManyD (PR.groupByRolling (\_ _ -> b) FL.drain)
218218
219+{-# INLINE parseManyGroupsRollingEither #-}
220+parseManyGroupsRollingEither :: (MonadThrow m, MonadCatch m) =>
221+ Bool -> SerialT m Int -> m ()
222+parseManyGroupsRollingEither b =
223+ IP.drain .
224+ IP.parseManyD (PR.groupByRollingEither (\_ _ -> b) FL.drain FL.drain)
225+
219226-------------------------------------------------------------------------------
220227-- Parsing with unfolds
221228-------------------------------------------------------------------------------
@@ -333,6 +340,10 @@ o_1_space_serial_nested value =
333340 , benchIOSink value "parseMany groupBy (1 group)" $ (parseManyGroups True)
334341 , benchIOSink value "parseMany groupRollingBy (1 group)"
335342 $ (parseManyGroupsRolling True)
343+ , benchIOSink value "parseMany groupRollingByEither (1 group)"
344+ $ (parseManyGroupsRollingEither True)
345+ , benchIOSink value "parseMany groupRollingByEither (bound groups)"
346+ $ (parseManyGroupsRollingEither False)
336347 ]
337348
338349o_1_space_serial_unfold :: Int -> [Array.Array Int] -> [Benchmark]