@@ -316,13 +316,15 @@ take n (Fold fstep finitial fextract) = Parser step initial extract
317 initial = Tuple' 0 <$> finitial
317 initial = Tuple' 0 <$> finitial
319− step (Tuple' i r) a = do
319+ step (Tuple' i r) a
320− res <- fstep r a
321+ res <- fstep r a
321− let i1 = i + 1
322+ let i1 = i + 1
322− s1 = Tuple' i1 res
323+ s1 = Tuple' i1 res
323− if i1 < n
324+ if i1 < n
324− then return $ Partial 0 s1
325+ then return $ Partial 0 s1
325− else Done 0 <$> fextract res
326+ else Done 0 <$> fextract res
327+ | otherwise = Done 1 <$> fextract r
327 extract (Tuple' _ r) = fextract r
329 extract (Tuple' _ r) = fextract r
@@ -338,11 +340,15 @@ takeEQ n (Fold fstep finitial fextract) = Parser step initial extract
339 initial = Tuple' 0 <$> finitial
341 initial = Tuple' 0 <$> finitial
341− step (Tuple' i r) a = do
343+ step (Tuple' i r) a
342− res <- fstep r a
345+ res <- fstep r a
343− let i1 = i + 1
346+ let i1 = i + 1
344− s1 = Tuple' i1 res
347+ s1 = Tuple' i1 res
345− if i1 < n then return (Continue 0 s1) else Done 0 <$> fextract res
349+ then return (Continue 0 s1)
350+ else Done 0 <$> fextract res
351+ | otherwise = Done 1 <$> fextract r
347 extract (Tuple' i r) =
353 extract (Tuple' i r) =
348 if n == i
354 if n == i
@@ -361,10 +367,11 @@ takeEQ n (Fold fstep finitial fextract) = Parser step initial extract
362{-# INLINE takeGE #-}
368{-# INLINE takeGE #-}
363takeGE :: MonadThrow m => Int -> Fold m a b -> Parser m a b
369takeGE :: MonadThrow m => Int -> Fold m a b -> Parser m a b
364−takeGE n (Fold fstep finitial fextract) = Parser step initial extract
370+takeGE cnt (Fold fstep finitial fextract) = Parser step initial extract
368 initial = Tuple' 0 <$> finitial
375 initial = Tuple' 0 <$> finitial
370 step (Tuple' i r) a = do
377 step (Tuple' i r) a = do
@@ -489,17 +496,18 @@ sliceSepByMax predicate cnt (Fold fstep finitial fextract) =
491 initial = Tuple' 0 <$> finitial
498 initial = Tuple' 0 <$> finitial
492 step (Tuple' i r) a
500 step (Tuple' i r) a
493− | not (predicate a) = do
501+ | not (predicate a) =
494− res <- fstep r a
504+ res <- fstep r a
495− let i1 = i + 1
505+ let i1 = i + 1
496− s1 = Tuple' i1 res
506+ s1 = Tuple' i1 res
498− then return $ Partial 0 s1
507+ return $ Partial 0 s1
500− b <- fextract res
508+ else Done 1 <$> fextract r
502 | otherwise = Done 0 <$> fextract r
509 | otherwise = Done 0 <$> fextract r
503 extract (Tuple' _ r) = fextract r
511 extract (Tuple' _ r) = fextract r
505-- | See 'Streamly.Internal.Data.Parser.wordBy'.
513-- | See 'Streamly.Internal.Data.Parser.wordBy'.