on master help sign in
Remove parselMx'
commit0bd94d964950a51864827c46eb361edc4aeb7367 authorHarendra Kumar <harendra@composewell.com> dateTue 2 Mar 2021, 03:13 (6 years ago) parent179d7e6
2 files changed−78
src/Streamly/Internal/Data/Stream/Prelude.hs−14 src/Streamly/Internal/Data/Stream/StreamD/Eliminate.hs−64
src/Streamly/Internal/Data/Stream/Prelude.hs−14
@@ -34,7 +34,6 @@ module Streamly.Internal.Data.Stream.Prelude
3434 , foldlMx'
3535 , foldl'
3636 , foldOnce
37− , parselMx'
3837
3938 -- Lazy left folds are useful only for reversing the stream
4039 , foldlS
@@ -66,13 +65,11 @@ module Streamly.Internal.Data.Stream.Prelude
6665 )
6766where
6867
69−import Control.Monad.Catch (MonadThrow)
7068import Control.Monad.Trans.Class (MonadTrans(..))
7169import Prelude hiding (foldr, minimum, maximum)
7270import qualified Prelude
7371
7472import Streamly.Internal.Data.Fold.Types (Fold (..))
75−import Streamly.Internal.Data.Parser (Step)
7673
7774#ifdef USE_STREAMK_ONLY
7875import qualified Streamly.Internal.Data.Stream.StreamK as S
@@ -158,17 +155,6 @@ foldlMx' :: (IsStream t, Monad m)
158155 => (x -> a -> m x) -> m x -> (x -> m b) -> t m a -> m b
159156foldlMx' step begin done m = S.foldlMx' step begin done $ toStreamS m
160157
161−{-# INLINE parselMx' #-}
162−parselMx'
163− :: (IsStream t, MonadThrow m)
164− => (s -> a -> m (Step s b))
165− -> m s
166− -> (s -> m b)
167− -> t m a
168− -> m b
169−parselMx' step initial extract m =
170− D.parselMx' step initial extract $ D.toStreamD m
171−
172158-- | Strict left fold with an extraction function. Like the standard strict
173159-- left fold, but applies a user supplied extraction function (the third
174160-- argument) to the folded value at the end. This is designed to work with the
src/Streamly/Internal/Data/Stream/StreamD/Eliminate.hs−64
@@ -32,7 +32,6 @@ module Streamly.Internal.Data.Stream.StreamD.Eliminate
3232 , foldl'
3333 , foldlMx'
3434 , foldlx'
35− , parselMx'
3635
3736 -- * Specific Fold Functions
3837 , drain
@@ -132,68 +131,6 @@ splitAt n ls
132131{-# ANN type List NoSpecConstr #-}
133132newtype List a = List {getList :: [a]}
134133
135−-- | Run a 'Parse' over a stream.
136−{-# INLINE_NORMAL parselMx' #-}
137−parselMx'
138− :: MonadThrow m
139− => (s -> a -> m (PR.Step s b))
140− -> m s
141− -> (s -> m b)
142− -> Stream m a
143− -> m b
144−parselMx' pstep initial extract (Stream step state) = do
145− initial >>= go SPEC state (List [])
146−
147− where
148−
149− -- XXX currently we are using a dumb list based approach for backtracking
150− -- buffer. This can be replaced by a sliding/ring buffer using Data.Array.
151− -- That will allow us more efficient random back and forth movement.
152− {-# INLINE go #-}
153− go !_ st buf !pst = do
154− r <- step defState st
155− case r of
156− Yield x s -> do
157− pRes <- pstep pst x
158− case pRes of
159− PR.Partial 0 pst1 -> go SPEC s (List []) pst1
160− PR.Partial n pst1 -> do
161− assert (n <= length (x:getList buf)) (return ())
162− let src0 = Prelude.take n (x:getList buf)
163− src = Prelude.reverse src0
164− gobuf SPEC s (List []) (List src) pst1
165− PR.Continue 0 pst1 -> go SPEC s (List (x:getList buf)) pst1
166− PR.Continue n pst1 -> do
167− assert (n <= length (x:getList buf)) (return ())
168− let (src0, buf1) = splitAt n (x:getList buf)
169− src = Prelude.reverse src0
170− gobuf SPEC s (List buf1) (List src) pst1
171− PR.Done _ b -> return b
172− PR.Error err -> throwM $ ParseError err
173− Skip s -> go SPEC s buf pst
174− Stop -> extract pst
175−
176− gobuf !_ s buf (List []) !pst = go SPEC s buf pst
177− gobuf !_ s buf (List (x:xs)) !pst = do
178− pRes <- pstep pst x
179− case pRes of
180− PR.Partial 0 pst1 ->
181− gobuf SPEC s (List []) (List xs) pst1
182− PR.Partial n pst1 -> do
183− assert (n <= length (x:getList buf)) (return ())
184− let src0 = Prelude.take n (x:getList buf)
185− src = Prelude.reverse src0 ++ xs
186− gobuf SPEC s (List []) (List src) pst1
187− PR.Continue 0 pst1 ->
188− gobuf SPEC s (List (x:getList buf)) (List xs) pst1
189− PR.Continue n pst1 -> do
190− assert (n <= length (x:getList buf)) (return ())
191− let (src0, buf1) = splitAt n (x:getList buf)
192− src = Prelude.reverse src0 ++ xs
193− gobuf SPEC s (List buf1) (List src) pst1
194− PR.Done _ b -> return b
195− PR.Error err -> throwM $ ParseError err
196−
197134-- | Run a 'Parse' over a stream.
198135{-# INLINE_NORMAL parse #-}
199136parse :: MonadThrow m => PRD.Parser m a b -> Stream m a -> m b
@@ -228,7 +165,6 @@ parse (PRD.Parser pstep initial extract) (Stream step state) = do
228165 let (src0, buf1) = splitAt n (x:getList buf)
229166 src = Prelude.reverse src0
230167 gobuf SPEC s (List buf1) (List src) pst1
231− -- Specialcase the Done 1 case
232168 PR.Done _ b -> return b
233169 PR.Error err -> throwM $ ParseError err
234170 Skip s -> go SPEC s buf pst