@@ -52,7 +52,6 @@ where
53import Data.Bifunctor (second)
53import Data.Bifunctor (second)
54import Control.Exception (assert)
54import Control.Exception (assert)
55−import Control.Monad.Catch (MonadThrow, throwM)
56import Control.Monad.IO.Class (MonadIO(..))
55import Control.Monad.IO.Class (MonadIO(..))
57import Data.Word (Word8)
56import Data.Word (Word8)
58import Streamly.Internal.Data.Unboxed (Unbox, peekWith, sizeOf)
57import Streamly.Internal.Data.Unboxed (Unbox, peekWith, sizeOf)
@@ -634,16 +633,16 @@ parseBreakD
635{-# INLINE_NORMAL parseBreakK #-}
634{-# INLINE_NORMAL parseBreakK #-}
636parseBreakK ::
635parseBreakK ::
637− forall m a b. (MonadIO m, MonadThrow m, Unbox a)
636+ forall m a b. (MonadIO m, Unbox a)
638 => PRD.Parser a m b
637 => PRD.Parser a m b
639 -> K.Stream m (Array.Array a)
638 -> K.Stream m (Array.Array a)
640− -> m (b, K.Stream m (Array.Array a))
639+ -> m (Either ParseError b, K.Stream m (Array.Array a))
641parseBreakK (PRD.Parser pstep initial extract) stream = do
640parseBreakK (PRD.Parser pstep initial extract) stream = do
642 res <- initial
641 res <- initial
643 case res of
642 case res of
644 PRD.IPartial s -> go s stream []
643 PRD.IPartial s -> go s stream []
645− PRD.IDone b -> return (b, stream)
644+ PRD.IDone b -> return (Right b, stream)
646− PRD.IError err -> throwM $ ParseError err
645+ PRD.IError err -> return (Left (ParseError err), stream)
@@ -686,7 +685,7 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
686 goArray s buf1 st src
685 goArray s buf1 st src
687 PR.Done 0 b -> do
686 PR.Done 0 b -> do
688 let arr = Array contents next end
687 let arr = Array contents next end
689− return (b, K.cons arr st)
688+ return (Right b, K.cons arr st)
690 PR.Done n b -> do
689 PR.Done n b -> do
691 assert (n <= Prelude.length (x:backBuf)) (return ())
690 assert (n <= Prelude.length (x:backBuf)) (return ())
692 let src0 = Prelude.take n (x:backBuf)
691 let src0 = Prelude.take n (x:backBuf)
@@ -695,8 +694,10 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
695 arr0 = A.fromListN n (Prelude.reverse src0)
694 arr0 = A.fromListN n (Prelude.reverse src0)
696 arr1 = Array contents next end
695 arr1 = Array contents next end
697 str = K.cons arr0 (K.cons arr1 st)
696 str = K.cons arr0 (K.cons arr1 st)
698− return (b, str)
697+ return (Right b, str)
699− PR.Error err -> throwM $ ParseError err
698+ PR.Error err -> do
699+ let str = K.cons (Array contents cur end) stream
700+ return (Left (ParseError err), str)
701 -- This is a simplified goArray
702 -- This is a simplified goArray
702 goExtract !pst backBuf (Array _ cur end)
703 goExtract !pst backBuf (Array _ cur end)
@@ -726,7 +727,7 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
726 goExtract s buf1 src
727 goExtract s buf1 src
727 PR.Done 0 b -> do
728 PR.Done 0 b -> do
728 let arr = Array contents next end
729 let arr = Array contents next end
729− return (b, K.fromPure arr)
730+ return (Right b, K.fromPure arr)
730 PR.Done n b -> do
731 PR.Done n b -> do
731 assert (n <= Prelude.length backBuf) (return ())
732 assert (n <= Prelude.length backBuf) (return ())
732 let src0 = Prelude.take n backBuf
733 let src0 = Prelude.take n backBuf
@@ -735,8 +736,10 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
735 arr0 = A.fromListN n (Prelude.reverse src0)
736 arr0 = A.fromListN n (Prelude.reverse src0)
736 arr1 = Array contents next end
737 arr1 = Array contents next end
737 str = K.cons arr0 (K.fromPure arr1)
738 str = K.cons arr0 (K.fromPure arr1)
738− return (b, str)
739+ return (Right b, str)
739− PR.Error err -> throwM $ ParseError err
740+ PR.Error err -> do
741+ let str = K.fromPure (Array contents cur end)
742+ return (Left (ParseError err), str)
741 -- This is a simplified goExtract
744 -- This is a simplified goExtract
742 {-# INLINE goStop #-}
745 {-# INLINE goStop #-}
@@ -752,15 +755,16 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
752 arr = A.fromListN n (Prelude.reverse src0)
755 arr = A.fromListN n (Prelude.reverse src0)
753 goExtract s buf1 arr
756 goExtract s buf1 arr
754 PR.Done 0 b ->
757 PR.Done 0 b ->
755− return (b, K.nil)
758+ return (Right b, K.nil)
756 PR.Done n b -> do
759 PR.Done n b -> do
757 assert (n <= Prelude.length backBuf) (return ())
760 assert (n <= Prelude.length backBuf) (return ())
758 let src0 = Prelude.take n backBuf
761 let src0 = Prelude.take n backBuf
759 -- XXX Use fromListRevN once implemented
762 -- XXX Use fromListRevN once implemented
760 -- arr0 = A.fromListRevN n src0
763 -- arr0 = A.fromListRevN n src0
761 arr0 = A.fromListN n (Prelude.reverse src0)
764 arr0 = A.fromListN n (Prelude.reverse src0)
762− return (b, K.fromPure arr0)
765+ return (Right b, K.fromPure arr0)
763− PR.Error err -> throwM $ ParseError err
766+ PR.Error err ->
767+ return (Left (ParseError err), K.nil)
765-- | Parse an array stream using the supplied 'Parser'. Returns the parse
769-- | Parse an array stream using the supplied 'Parser'. Returns the parse
766-- result and the unconsumed stream. Throws 'ParseError' if the parse fails.
770-- result and the unconsumed stream. Throws 'ParseError' if the parse fails.
@@ -769,10 +773,10 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
770{-# INLINE_NORMAL parseBreak #-}
774{-# INLINE_NORMAL parseBreak #-}
771parseBreak ::
775parseBreak ::
772− (MonadIO m, MonadThrow m, Unbox a)
776+ (MonadIO m, Unbox a)
773 => PR.Parser a m b
777 => PR.Parser a m b
774 -> Stream m (A.Array a)
778 -> Stream m (A.Array a)
775− -> m (b, Stream m (A.Array a))
779+ -> m (Either ParseError b, Stream m (A.Array a))
777parseBreak p s =
781parseBreak p s =
778 fmap fromStreamD <$> parseBreakD (PRD.fromParserK p) (toStreamD s)
782 fmap fromStreamD <$> parseBreakD (PRD.fromParserK p) (toStreamD s)
@@ -795,10 +799,10 @@ parseBreak p =
796{-# INLINE_NORMAL runArrayParserDBreak #-}
800{-# INLINE_NORMAL runArrayParserDBreak #-}
797runArrayParserDBreak ::
801runArrayParserDBreak ::
798− forall m a b. (MonadIO m, MonadThrow m, Unbox a)
802+ forall m a b. (MonadIO m, Unbox a)
799 => PRD.Parser (Array a) m b
803 => PRD.Parser (Array a) m b
800 -> D.Stream m (Array.Array a)
804 -> D.Stream m (Array.Array a)
801− -> m (b, D.Stream m (Array.Array a))
805+ -> m (Either ParseError b, D.Stream m (Array.Array a))
802runArrayParserDBreak
806runArrayParserDBreak
803 (PRD.Parser pstep initial extract)
807 (PRD.Parser pstep initial extract)
804 stream@(D.Stream step state) = do
808 stream@(D.Stream step state) = do
@@ -806,8 +810,8 @@ runArrayParserDBreak
806 res <- initial
810 res <- initial
807 case res of
811 case res of
808 PRD.IPartial s -> go SPEC state (List []) s
812 PRD.IPartial s -> go SPEC state (List []) s
809− PRD.IDone b -> return (b, stream)
813+ PRD.IDone b -> return (Right b, stream)
810− PRD.IError err -> throwM $ ParseError err
814+ PRD.IError err -> return (Left (ParseError err), stream)
@@ -846,16 +850,19 @@ runArrayParserDBreak
846 let (src0, buf1) = splitAtArrayListRev n (x:getList backBuf)
850 let (src0, buf1) = splitAtArrayListRev n (x:getList backBuf)
847 src = Prelude.reverse src0 ++ xs
851 src = Prelude.reverse src0 ++ xs
848 gobuf SPEC src s (List buf1) pst1
852 gobuf SPEC src s (List buf1) pst1
849− PR.Done 0 b ->
853+ PR.Done 0 b -> do
850− return (b, D.Stream step s)
854+ let str = D.append (D.fromList xs) (D.Stream step s)
855+ return (Right b, str)
851 PR.Done n b -> do
856 PR.Done n b -> do
853 (n <= sum (map Array.length (x:getList backBuf)))
858 (n <= sum (map Array.length (x:getList backBuf)))
854 (return ())
859 (return ())
855 let src0 = takeArrayListRev n (x:getList backBuf)
860 let src0 = takeArrayListRev n (x:getList backBuf)
856 src = Prelude.reverse src0 ++ xs
861 src = Prelude.reverse src0 ++ xs
857− return (b, D.append (D.fromList src) (D.Stream step s))
862+ return (Right b, D.append (D.fromList src) (D.Stream step s))
858− PR.Error err -> throwM $ ParseError err
863+ PR.Error err -> do
864+ let strm = D.append (D.fromList (x:xs)) (D.Stream step s)
865+ return (Left (ParseError err), strm)
860 -- This is a simplified gobuf
867 -- This is a simplified gobuf
861 goExtract _ [] backBuf !pst = goStop backBuf pst
868 goExtract _ [] backBuf !pst = goStop backBuf pst
@@ -881,15 +888,16 @@ runArrayParserDBreak
881 src = Prelude.reverse src0 ++ xs
888 src = Prelude.reverse src0 ++ xs
882 goExtract SPEC src (List buf1) pst1
889 goExtract SPEC src (List buf1) pst1
883 PR.Done 0 b ->
890 PR.Done 0 b ->
884− return (b, D.nil)
891+ return (Right b, D.fromList xs)
885 PR.Done n b -> do
892 PR.Done n b -> do
887 (n <= sum (map Array.length (x:getList backBuf)))
894 (n <= sum (map Array.length (x:getList backBuf)))
888 (return ())
895 (return ())
889 let src0 = takeArrayListRev n (x:getList backBuf)
896 let src0 = takeArrayListRev n (x:getList backBuf)
890 src = Prelude.reverse src0 ++ xs
897 src = Prelude.reverse src0 ++ xs
891− return (b, D.fromList src)
898+ return (Right b, D.fromList src)
892− PR.Error err -> throwM $ ParseError err
899+ PR.Error err ->
900+ return (Left (ParseError err), D.fromList (x:xs))
894 -- This is a simplified goExtract
902 -- This is a simplified goExtract
895 {-# INLINE goStop #-}
903 {-# INLINE goStop #-}
@@ -906,15 +914,16 @@ runArrayParserDBreak
906 let (src0, buf1) = splitAtArrayListRev n (getList backBuf)
914 let (src0, buf1) = splitAtArrayListRev n (getList backBuf)
907 src = Prelude.reverse src0
915 src = Prelude.reverse src0
908 goExtract SPEC src (List buf1) pst1
916 goExtract SPEC src (List buf1) pst1
909− PR.Done 0 b -> return (b, D.nil)
917+ PR.Done 0 b -> return (Right b, D.nil)
910 PR.Done n b -> do
918 PR.Done n b -> do
912 (n <= sum (map Array.length (getList backBuf)))
920 (n <= sum (map Array.length (getList backBuf)))
913 (return ())
921 (return ())
914 let src0 = takeArrayListRev n (getList backBuf)
922 let src0 = takeArrayListRev n (getList backBuf)
915 src = Prelude.reverse src0
923 src = Prelude.reverse src0
916− return (b, D.fromList src)
924+ return (Right b, D.fromList src)
917− PR.Error err -> throwM $ ParseError err
925+ PR.Error err ->
926+ return (Left (ParseError err), D.nil)
920-- | Parse an array stream using the supplied 'Parser'. Returns the parse
929-- | Parse an array stream using the supplied 'Parser'. Returns the parse
@@ -936,8 +945,8 @@ parseArr p s = fmap fromStreamD <$> parseBreakD p (toStreamD s)
936-- /Pre-release/
945-- /Pre-release/
938{-# INLINE runArrayFold #-}
947{-# INLINE runArrayFold #-}
939−runArrayFold :: (MonadIO m, MonadThrow m, Unbox a) =>
948+runArrayFold :: (MonadIO m, Unbox a) =>
940− ChunkFold m a b -> Stream m (A.Array a) -> m b
949+ ChunkFold m a b -> Stream m (A.Array a) -> m (Either ParseError b)
941runArrayFold (ChunkFold p) s = fst <$> runArrayParserDBreak p (toStreamD s)
950runArrayFold (ChunkFold p) s = fst <$> runArrayParserDBreak p (toStreamD s)
943-- | Like 'fold' but also returns the remaining stream.
952-- | Like 'fold' but also returns the remaining stream.
@@ -945,8 +954,8 @@ runArrayFold (ChunkFold p) s = fst <$> runArrayParserDBreak p (toStreamD s)
945-- /Pre-release/
954-- /Pre-release/
947{-# INLINE runArrayFoldBreak #-}
956{-# INLINE runArrayFoldBreak #-}
948−runArrayFoldBreak :: (MonadIO m, MonadThrow m, Unbox a) =>
957+runArrayFoldBreak :: (MonadIO m, Unbox a) =>
949− ChunkFold m a b -> Stream m (A.Array a) -> m (b, Stream m (A.Array a))
958+ ChunkFold m a b -> Stream m (A.Array a) -> m (Either ParseError b, Stream m (A.Array a))
950runArrayFoldBreak (ChunkFold p) s =
959runArrayFoldBreak (ChunkFold p) s =
951 second fromStreamD <$> runArrayParserDBreak p (toStreamD s)
960 second fromStreamD <$> runArrayParserDBreak p (toStreamD s)
@@ -963,10 +972,10 @@ data ParseChunksState x inpBuf st pst =
964{-# INLINE_NORMAL runArrayFoldManyD #-}
973{-# INLINE_NORMAL runArrayFoldManyD #-}
965runArrayFoldManyD
974runArrayFoldManyD
966− :: (MonadThrow m, Unbox a)
975+ :: (Monad m, Unbox a)
967 => ChunkFold m a b
976 => ChunkFold m a b
968 -> D.Stream m (Array a)
977 -> D.Stream m (Array a)
969− -> D.Stream m b
978+ -> D.Stream m (Either ParseError b)
970runArrayFoldManyD
979runArrayFoldManyD
971 (ChunkFold (PRD.Parser pstep initial extract)) (D.Stream step state) =
980 (ChunkFold (PRD.Parser pstep initial extract)) (D.Stream step state) =
@@ -985,10 +994,14 @@ runArrayFoldManyD
985 case res of
994 case res of
986 PRD.IPartial ps ->
995 PRD.IPartial ps ->
987 return $ D.Skip $ ParseChunksBuf [x] s [] ps
996 return $ D.Skip $ ParseChunksBuf [x] s [] ps
988− PRD.IDone pb ->
997+ PRD.IDone pb -> do
989 let next = ParseChunksInit [x] s
998 let next = ParseChunksInit [x] s
990− in return $ D.Skip $ ParseChunksYield pb next
999+ return $ D.Skip $ ParseChunksYield (Right pb) next
991− PRD.IError err -> throwM $ ParseError err
1000+ PRD.IError err -> do
1001+ let next = ParseChunksInitLeftOver []
1004+ $ ParseChunksYield (Left (ParseError err)) next
992 D.Skip s -> return $ D.Skip $ ParseChunksInit [] s
1005 D.Skip s -> return $ D.Skip $ ParseChunksInit [] s
993 D.Stop -> return D.Stop
1006 D.Stop -> return D.Stop
@@ -1000,8 +1013,12 @@ runArrayFoldManyD
1000 return $ D.Skip $ ParseChunksBuf src st [] ps
1013 return $ D.Skip $ ParseChunksBuf src st [] ps
1001 PRD.IDone pb ->
1014 PRD.IDone pb ->
1002 let next = ParseChunksInit src st
1015 let next = ParseChunksInit src st
1003− in return $ D.Skip $ ParseChunksYield pb next
1016+ in return $ D.Skip $ ParseChunksYield (Right pb) next
1004− PRD.IError err -> throwM $ ParseError err
1017+ PRD.IError err -> do
1018+ let next = ParseChunksInitLeftOver []
1021+ $ ParseChunksYield (Left (ParseError err)) next
1006 -- This is a simplified ParseChunksInit
1023 -- This is a simplified ParseChunksInit
1007 stepOuter _ (ParseChunksInitBuf src) = do
1024 stepOuter _ (ParseChunksInitBuf src) = do
@@ -1011,8 +1028,12 @@ runArrayFoldManyD
1011 return $ D.Skip $ ParseChunksExtract src [] ps
1028 return $ D.Skip $ ParseChunksExtract src [] ps
1012 PRD.IDone pb ->
1029 PRD.IDone pb ->
1013 let next = ParseChunksInitBuf src
1030 let next = ParseChunksInitBuf src
1014− in return $ D.Skip $ ParseChunksYield pb next
1031+ in return $ D.Skip $ ParseChunksYield (Right pb) next
1015− PRD.IError err -> throwM $ ParseError err
1032+ PRD.IError err -> do
1033+ let next = ParseChunksInitLeftOver []
1036+ $ ParseChunksYield (Left (ParseError err)) next
1017 -- XXX we just discard any leftover input at the end
1038 -- XXX we just discard any leftover input at the end
1018 stepOuter _ (ParseChunksInitLeftOver _) = return D.Stop
1039 stepOuter _ (ParseChunksInitLeftOver _) = return D.Stop
@@ -1044,16 +1065,23 @@ runArrayFoldManyD
1044 return $ D.Skip $ ParseChunksBuf src s buf1 pst1
1065 return $ D.Skip $ ParseChunksBuf src s buf1 pst1
1045 PR.Done 0 b -> do
1066 PR.Done 0 b -> do
1046 return $ D.Skip $
1067 return $ D.Skip $
1047− ParseChunksYield b (ParseChunksInit [] s)
1068+ ParseChunksYield (Right b) (ParseChunksInit [] s)
1048 PR.Done n b -> do
1069 PR.Done n b -> do
1050 (n <= sum (map Array.length (x:backBuf)))
1071 (n <= sum (map Array.length (x:backBuf)))
1051 (return ())
1072 (return ())
1052 let src0 = takeArrayListRev n (x:backBuf)
1073 let src0 = takeArrayListRev n (x:backBuf)
1053− let src = Prelude.reverse src0
1074+ src = Prelude.reverse src0
1055− ParseChunksYield b (ParseChunksInit src s)
1075+ next = ParseChunksInit src s
1078+ $ ParseChunksYield (Right b) next
1056− PR.Error err -> throwM $ ParseError err
1079+ PR.Error err -> do
1080+ let next = ParseChunksInitLeftOver []
1083+ $ ParseChunksYield (Left (ParseError err)) next
1057 D.Skip s -> return $ D.Skip $ ParseChunksStream s backBuf pst
1085 D.Skip s -> return $ D.Skip $ ParseChunksStream s backBuf pst
1058 D.Stop -> return $ D.Skip $ ParseChunksStop backBuf pst
1086 D.Stop -> return $ D.Skip $ ParseChunksStop backBuf pst
@@ -1080,13 +1108,21 @@ runArrayFoldManyD
1080 src = Prelude.reverse src0 ++ xs
1108 src = Prelude.reverse src0 ++ xs
1081 return $ D.Skip $ ParseChunksBuf src s buf1 pst1
1109 return $ D.Skip $ ParseChunksBuf src s buf1 pst1
1082 PR.Done 0 b ->
1110 PR.Done 0 b ->
1083− return $ D.Skip $ ParseChunksYield b (ParseChunksInit xs s)
1113+ $ ParseChunksYield (Right b) (ParseChunksInit xs s)
1084 PR.Done n b -> do
1114 PR.Done n b -> do
1085 assert (n <= sum (map Array.length (x:backBuf))) (return ())
1115 assert (n <= sum (map Array.length (x:backBuf))) (return ())
1086 let src0 = takeArrayListRev n (x:backBuf)
1116 let src0 = takeArrayListRev n (x:backBuf)
1087 src = Prelude.reverse src0 ++ xs
1117 src = Prelude.reverse src0 ++ xs
1088− return $ D.Skip $ ParseChunksYield b (ParseChunksInit src s)
1120+ $ ParseChunksYield (Right b) (ParseChunksInit src s)
1089− PR.Error err -> throwM $ ParseError err
1121+ PR.Error err -> do
1122+ let next = ParseChunksInitLeftOver []
1125+ $ ParseChunksYield (Left (ParseError err)) next
1091 -- This is a simplified ParseChunksBuf
1127 -- This is a simplified ParseChunksBuf
1092 stepOuter _ (ParseChunksExtract [] buf pst) =
1128 stepOuter _ (ParseChunksExtract [] buf pst) =
@@ -1110,13 +1146,22 @@ runArrayFoldManyD
1110 src = Prelude.reverse src0 ++ xs
1146 src = Prelude.reverse src0 ++ xs
1111 return $ D.Skip $ ParseChunksExtract src buf1 pst1
1147 return $ D.Skip $ ParseChunksExtract src buf1 pst1
1112 PR.Done 0 b ->
1148 PR.Done 0 b ->
1113− return $ D.Skip $ ParseChunksYield b (ParseChunksInitBuf xs)
1151+ $ ParseChunksYield (Right b) (ParseChunksInitBuf xs)
1114 PR.Done n b -> do
1152 PR.Done n b -> do
1115 assert (n <= sum (map Array.length (x:backBuf))) (return ())
1153 assert (n <= sum (map Array.length (x:backBuf))) (return ())
1116 let src0 = takeArrayListRev n (x:backBuf)
1154 let src0 = takeArrayListRev n (x:backBuf)
1117 src = Prelude.reverse src0 ++ xs
1155 src = Prelude.reverse src0 ++ xs
1118− return $ D.Skip $ ParseChunksYield b (ParseChunksInitBuf src)
1158+ $ ParseChunksYield (Right b) (ParseChunksInitBuf src)
1119− PR.Error err -> throwM $ ParseError err
1159+ PR.Error err -> do
1160+ let next = ParseChunksInitLeftOver []
1163+ $ ParseChunksYield (Left (ParseError err)) next
1121 -- This is a simplified ParseChunksExtract
1166 -- This is a simplified ParseChunksExtract
1122 stepOuter _ (ParseChunksStop backBuf pst) = do
1167 stepOuter _ (ParseChunksStop backBuf pst) = do
@@ -1131,13 +1176,21 @@ runArrayFoldManyD
1131 src = Prelude.reverse src0
1176 src = Prelude.reverse src0
1132 return $ D.Skip $ ParseChunksExtract src buf1 pst1
1177 return $ D.Skip $ ParseChunksExtract src buf1 pst1
1133 PR.Done 0 b ->
1178 PR.Done 0 b ->
1134− return $ D.Skip $ ParseChunksYield b (ParseChunksInitLeftOver [])
1181+ $ ParseChunksYield (Right b) (ParseChunksInitLeftOver [])
1135 PR.Done n b -> do
1182 PR.Done n b -> do
1136 assert (n <= sum (map Array.length backBuf)) (return ())
1183 assert (n <= sum (map Array.length backBuf)) (return ())
1137 let src0 = takeArrayListRev n backBuf
1184 let src0 = takeArrayListRev n backBuf
1138 src = Prelude.reverse src0
1185 src = Prelude.reverse src0
1139− return $ D.Skip $ ParseChunksYield b (ParseChunksInitBuf src)
1188+ $ ParseChunksYield (Right b) (ParseChunksInitBuf src)
1140− PR.Error err -> throwM $ ParseError err
1189+ PR.Error err -> do
1190+ let next = ParseChunksInitLeftOver []
1193+ $ ParseChunksYield (Left (ParseError err)) next
1142 stepOuter _ (ParseChunksYield a next) = return $ D.Yield a next
1195 stepOuter _ (ParseChunksYield a next) = return $ D.Yield a next
@@ -1149,8 +1202,8 @@ runArrayFoldManyD
1149-- /Pre-release/
1202-- /Pre-release/
1150{-# INLINE runArrayFoldMany #-}
1203{-# INLINE runArrayFoldMany #-}
1151runArrayFoldMany
1204runArrayFoldMany
1152− :: (MonadThrow m, Unbox a)
1205+ :: (Monad m, Unbox a)
1153 => ChunkFold m a b
1206 => ChunkFold m a b
1154 -> Stream m (Array a)
1207 -> Stream m (Array a)
1155− -> Stream m b
1208+ -> Stream m (Either ParseError b)
1156runArrayFoldMany p m = fromStreamD $ runArrayFoldManyD p (toStreamD m)
1209runArrayFoldMany p m = fromStreamD $ runArrayFoldManyD p (toStreamD m)