@@ -1093,25 +1093,20 @@ take n (Fold fstep finitial fextract) = Fold step initial extract
1096− initial = do
1096+ {-# INLINE next #-}
1097− res <- finitial
1097+ next i res =
1101− then return $ Partial $ Tuple'Fused 0 s
1102− else Done <$> fextract s
1103− Done b -> return $ Done b
1105− step (Tuple'Fused i r) a = do
1107 case res of
1098 case res of
1108− Partial sres -> do
1099+ Partial s -> do
1109 let i1 = i + 1
1100 let i1 = i + 1
1110− s1 = Tuple'Fused i1 sres
1101+ s1 = Tuple'Fused i1 s
1111 if i1 < n
1102 if i1 < n
1112 then return $ Partial s1
1103 then return $ Partial s1
1113− else Done <$> fextract sres
1104+ else Done <$> fextract s
1114− Done bres -> return $ Done bres
1105+ Done b -> return $ Done b
1107+ initial = finitial >>= next (-1)
1109+ step (Tuple'Fused i r) a = fstep r a >>= next i
1116 extract (Tuple'Fused _ r) = fextract r
1111 extract (Tuple'Fused _ r) = fextract r