on master help sign in
Mk non-functional naming changes for continuation parsers & friends
commit5322566023b2453dc248e0921a5f4df7afaaab46 authorAdithya Kumar <adithya@composewell.com> dateMon 7 Aug 2023, 14:11 (3 years ago) parent2e9f0b9
5 files changed+71−79
benchmark/Streamly/Benchmark/Data/ParserK.hs+9−9 benchmark/streamly-benchmarks.cabal+3−19 core/src/Streamly/Data/ParserK.hs+13−5 core/src/Streamly/Internal/Data/Parser/ParserK/Type.hs+29−29 core/src/Streamly/Internal/Data/StreamK.hs+17−17
benchmark/Streamly/Benchmark/Data/ParserK.hs+9−9
@@ -5,9 +5,9 @@
55-- License : BSD-3-Clause
66-- Maintainer : streamly@composewell.com
77
8−-- BENCH_CHUNKED -> fromParser
9−-- BENCH_CHUNKED_GENERIC -> fromParserGeneric
10−-- BENCH_SINGULAR -> fromParserSingular
8+-- BENCH_CHUNKED -> adaptC
9+-- BENCH_CHUNKED_GENERIC -> adaptCG
10+-- BENCH_SINGULAR -> adapt
1111
1212{-# LANGUAGE CPP #-}
1313{-# LANGUAGE FlexibleContexts #-}
@@ -58,7 +58,7 @@ import Streamly.Benchmark.Common
5858#ifdef BENCH_CHUNKED
5959
6060#define PARSE_OP StreamK.parseChunks
61−#define FROM_PARSER fromParser
61+#define FROM_PARSER adaptC
6262#define INPUT (Array a)
6363#define PARSE_ELEM (Array Int)
6464#define CONSTRAINT_IO (MonadIO m, Unbox a)
@@ -69,8 +69,8 @@ import Streamly.Benchmark.Common
6969
7070#ifdef BENCH_CHUNKED_GENERIC
7171
72−#define PARSE_OP StreamK.parseGenericChunks
73−#define FROM_PARSER fromParserGeneric
72+#define PARSE_OP StreamK.parseChunksGeneric
73+#define FROM_PARSER adaptCG
7474#define INPUT (Array a)
7575#define PARSE_ELEM (Array Int)
7676#define CONSTRAINT_IO (MonadIO m)
@@ -81,13 +81,13 @@ import Streamly.Benchmark.Common
8181
8282#ifdef BENCH_SINGULAR
8383
84−#define PARSE_OP StreamK.parseSingular
85−#define FROM_PARSER fromParserSingular
84+#define PARSE_OP StreamK.parse
85+#define FROM_PARSER adapt
8686#define INPUT a
8787#define PARSE_ELEM Int
8888#define CONSTRAINT_IO (MonadIO m)
8989#define CONSTRAINT (Monad m)
90−#define MODULE_NAME "ParserK.Singular"
90+#define MODULE_NAME "ParserK"
9191
9292#endif
9393
benchmark/streamly-benchmarks.cabal+3−19
@@ -415,7 +415,7 @@ benchmark Data.Parser
415415 else
416416 ghc-options: +RTS -M2000M -RTS
417417
418−benchmark Data.ParserK.Singular
418+benchmark Data.ParserK
419419 import: bench-options
420420 type: exitcode-stdio-1.0
421421 hs-source-dirs: Streamly/Benchmark/Data
@@ -427,7 +427,7 @@ benchmark Data.ParserK.Singular
427427 buildable: True
428428 build-depends: exceptions >= 0.8 && < 0.11
429429
430−benchmark Data.ParserK
430+benchmark Data.ParserK.Chunked
431431 import: bench-options
432432 type: exitcode-stdio-1.0
433433 hs-source-dirs: Streamly/Benchmark/Data
@@ -439,7 +439,7 @@ benchmark Data.ParserK
439439 buildable: True
440440 build-depends: exceptions >= 0.8 && < 0.11
441441
442−benchmark Data.ParserK.Generic
442+benchmark Data.ParserK.Chunked.Generic
443443 import: bench-options
444444 type: exitcode-stdio-1.0
445445 hs-source-dirs: Streamly/Benchmark/Data
@@ -451,22 +451,6 @@ benchmark Data.ParserK.Generic
451451 buildable: True
452452 build-depends: exceptions >= 0.8 && < 0.11
453453
454−-- Note: to use this we have to set DISABLE_FUSION in ParserD.hs so that
455−-- the rewrite rules are disabled. We can also use the "no-fusion" build
456−-- flag but we need to keep in mind that it disables fusion for streams
457−-- as well.
458−-- benchmark Data.FromParserK
459−-- import: bench-options
460−-- type: exitcode-stdio-1.0
461−-- hs-source-dirs: Streamly/Benchmark/Data
462−-- cpp-options: -DFROM_PARSERK
463−-- main-is: ParserK.hs
464−-- if flag(use-streamly-core) || impl(ghcjs)
465−-- buildable: False
466−-- else
467−-- buildable: True
468−-- build-depends: exceptions >= 0.8 && < 0.11
469−
470454-------------------------------------------------------------------------------
471455-- Raw Streams
472456-------------------------------------------------------------------------------
core/src/Streamly/Data/ParserK.hs+13−5
@@ -18,14 +18,17 @@ module Streamly.Data.ParserK
1818
1919 -- * Parsers
2020 -- ** Conversions
21− , fromFold
22− , fromParser
21+ , adaptC
2322 -- , toParser
2423
2524 -- ** Without Input
2625 , fromPure
2726 , fromEffect
2827 , die
28+
29+ -- * Deprecated
30+ , fromFold
31+ , fromParser
2932 )
3033
3134where
@@ -38,8 +41,13 @@ import qualified Streamly.Internal.Data.Parser as ParserD
3841
3942import Streamly.Internal.Data.Parser.ParserK.Type
4043
41−-- | Convert a 'Fold' to a 'ParserK'.
42−--
44+{-# DEPRECATED fromFold "Please use \"ParserK.adaptC . Parser.fromFold\" instead." #-}
4345{-# INLINE fromFold #-}
4446fromFold :: (MonadIO m, Unbox a) => Fold m a b -> ParserK (Array a) m b
45−fromFold = fromParser . ParserD.fromFold
47+fromFold = adaptC . ParserD.fromFold
48+
49+{-# DEPRECATED fromParser "Please use \"adaptC\" instead." #-}
50+{-# INLINE fromParser #-}
51+fromParser ::
52+ (MonadIO m, Unbox a) => ParserD.Parser a m b -> ParserK (Array a) m b
53+fromParser = adaptC
core/src/Streamly/Internal/Data/Parser/ParserK/Type.hs+29−29
@@ -27,9 +27,9 @@ module Streamly.Internal.Data.Parser.ParserK.Type
2727 , Input (..)
2828 , ParseResult (..)
2929 , ParserK (..)
30− , fromParser
31− , fromParserSingular
32− , fromParserGeneric
30+ , adaptC
31+ , adapt
32+ , adaptCG
3333 -- , toParser
3434 , fromPure
3535 , fromEffect
@@ -380,8 +380,8 @@ instance MonadTrans (ParserK a) where
380380-- Chunked
381381--------------------------------------------------------------------------------
382382
383−{-# INLINE parseDToK #-}
384−parseDToK
383+{-# INLINE adaptCWith #-}
384+adaptCWith
385385 :: forall m a s b r. (Monad m, Unbox a)
386386 => (s -> a -> m (ParserD.Step s b))
387387 -> m (ParserD.Initial s b)
@@ -391,7 +391,7 @@ parseDToK
391391 -> Int
392392 -> Input (Array a)
393393 -> m (Step (Array a) m r)
394−parseDToK pstep initial extract cont !offset0 !usedCount !input = do
394+adaptCWith pstep initial extract cont !offset0 !usedCount !input = do
395395 res <- initial
396396 case res of
397397 ParserD.IPartial pst -> do
@@ -495,7 +495,7 @@ parseDToK pstep initial extract cont !offset0 !usedCount !input = do
495495 -- XXX It is called only when there is no input arr. So using 0
496496 -- as the position is correct?
497497 cont (Failure 0 err) count None
498− ParserD.Partial _ _ -> error "Bug: parseDToK Partial unreachable"
498+ ParserD.Partial _ _ -> error "Bug: adaptCWith Partial unreachable"
499499
500500 -- XXX Maybe we can use two separate continuations instead of using
501501 -- Just/Nothing cases here. That may help in avoiding the parseContJust
@@ -508,17 +508,17 @@ parseDToK pstep initial extract cont !offset0 !usedCount !input = do
508508--
509509-- /Pre-release/
510510--
511−{-# INLINE_LATE fromParser #-}
512−fromParser :: (Monad m, Unbox a) => ParserD.Parser a m b -> ParserK (Array a) m b
513−fromParser (ParserD.Parser step initial extract) =
514− MkParser $ parseDToK step initial extract
511+{-# INLINE_LATE adaptC #-}
512+adaptC :: (Monad m, Unbox a) => ParserD.Parser a m b -> ParserK (Array a) m b
513+adaptC (ParserD.Parser step initial extract) =
514+ MkParser $ adaptCWith step initial extract
515515
516516--------------------------------------------------------------------------------
517517-- Singular
518518--------------------------------------------------------------------------------
519519
520−{-# INLINE parseDToKSingular #-}
521−parseDToKSingular
520+{-# INLINE adaptWith #-}
521+adaptWith
522522 :: forall m a s b r. (Monad m)
523523 => (s -> a -> m (ParserD.Step s b))
524524 -> m (ParserD.Initial s b)
@@ -528,7 +528,7 @@ parseDToKSingular
528528 -> Int
529529 -> Input a
530530 -> m (Step a m r)
531−parseDToKSingular pstep initial extract cont !relPos !usedCount !input = do
531+adaptWith pstep initial extract cont !relPos !usedCount !input = do
532532 res <- initial
533533 case res of
534534 ParserD.IPartial pst -> do
@@ -597,7 +597,7 @@ parseDToKSingular pstep initial extract cont !relPos !usedCount !input = do
597597 -- XXX It is called only when there is no input arr. So using 0
598598 -- as the position is correct?
599599 cont (Failure 0 err) count None
600− ParserD.Partial _ _ -> error "Bug: parseDToK Partial unreachable"
600+ ParserD.Partial _ _ -> error "Bug: adaptCWith Partial unreachable"
601601
602602 -- XXX Maybe we can use two separate continuations instead of using
603603 -- Just/Nothing cases here. That may help in avoiding the parseContJust
@@ -606,19 +606,19 @@ parseDToKSingular pstep initial extract cont !relPos !usedCount !input = do
606606 parseCont !cnt !pst (Chunk arr) = parseContChunk cnt pst arr
607607 parseCont !cnt !pst None = parseContNothing cnt pst
608608
609−-- | Similar to "fromParser" but for singular elements.
609+-- | Similar to "adaptC" but for non-chunked input.
610610--
611−{-# INLINE_LATE fromParserSingular #-}
612−fromParserSingular :: Monad m => ParserD.Parser a m b -> ParserK a m b
613−fromParserSingular (ParserD.Parser step initial extract) =
614− MkParser $ parseDToKSingular step initial extract
611+{-# INLINE_LATE adapt #-}
612+adapt :: Monad m => ParserD.Parser a m b -> ParserK a m b
613+adapt (ParserD.Parser step initial extract) =
614+ MkParser $ adaptWith step initial extract
615615
616616--------------------------------------------------------------------------------
617617-- Chunked Generic
618618--------------------------------------------------------------------------------
619619
620−{-# INLINE parseDToKGeneric #-}
621−parseDToKGeneric
620+{-# INLINE adaptCGWith #-}
621+adaptCGWith
622622 :: forall m a s b r. (Monad m)
623623 => (s -> a -> m (ParserD.Step s b))
624624 -> m (ParserD.Initial s b)
@@ -628,7 +628,7 @@ parseDToKGeneric
628628 -> Int
629629 -> Input (GenArr.Array a)
630630 -> m (Step (GenArr.Array a) m r)
631−parseDToKGeneric pstep initial extract cont !offset0 !usedCount !input = do
631+adaptCGWith pstep initial extract cont !offset0 !usedCount !input = do
632632 res <- initial
633633 case res of
634634 ParserD.IPartial pst -> do
@@ -728,19 +728,19 @@ parseDToKGeneric pstep initial extract cont !offset0 !usedCount !input = do
728728 -- XXX It is called only when there is no input arr. So using 0
729729 -- as the position is correct?
730730 cont (Failure 0 err) count None
731− ParserD.Partial _ _ -> error "Bug: parseDToKGeneric Partial unreachable"
731+ ParserD.Partial _ _ -> error "Bug: adaptCGWith Partial unreachable"
732732
733733 {-# INLINE parseCont #-}
734734 parseCont !cnt !pst (Chunk arr) = parseContChunk cnt 0 pst arr
735735 parseCont !cnt !pst None = parseContNothing cnt pst
736736
737−-- | Similar to "fromParser" but is not constrained.
737+-- | Similar to "adaptC" but is not constrained.
738738--
739−{-# INLINE_LATE fromParserGeneric #-}
740−fromParserGeneric ::
739+{-# INLINE_LATE adaptCG #-}
740+adaptCG ::
741741 Monad m => ParserD.Parser a m b -> ParserK (GenArr.Array a) m b
742−fromParserGeneric (ParserD.Parser step initial extract) =
743− MkParser $ parseDToKGeneric step initial extract
742+adaptCG (ParserD.Parser step initial extract) =
743+ MkParser $ adaptCGWith step initial extract
744744
745745{-
746746-------------------------------------------------------------------------------
core/src/Streamly/Internal/Data/StreamK.hs+17−17
@@ -47,10 +47,10 @@ module Streamly.Internal.Data.StreamK
4747 , parseD
4848 , parseBreakChunks
4949 , parseChunks
50− , parseBreakSingular
51− , parseSingular
52− , parseBreakGenericChunks
53− , parseGenericChunks
50+ , parseBreak
51+ , parse
52+ , parseBreakChunksGeneric
53+ , parseChunksGeneric
5454
5555 -- ** Specialized Folds
5656 , head
@@ -1448,13 +1448,13 @@ backTrackSingular = go
14481448
14491449-- | Similar to 'parseBreak' but works on singular elements.
14501450--
1451−{-# INLINE_NORMAL parseBreakSingular #-}
1452−parseBreakSingular
1451+{-# INLINE_NORMAL parseBreak #-}
1452+parseBreak
14531453 :: forall m a b. Monad m
14541454 => ParserK.ParserK a m b
14551455 -> StreamK m a
14561456 -> m (Either ParseError b, StreamK m a)
1457−parseBreakSingular parser input = do
1457+parseBreak parser input = do
14581458 let parserk = ParserK.runParser parser parserDone 0 0
14591459 in go [] parserk input
14601460
@@ -1495,7 +1495,7 @@ parseBreakSingular parser input = do
14951495 ParserK.Error _ err -> return (Left (ParseError err), nil)
14961496
14971497 seekErr n =
1498− error $ "parseBreakSingular: Partial: forward seek not implemented n = "
1498+ error $ "parseBreak: Partial: forward seek not implemented n = "
14991499 ++ show n
15001500
15011501 yieldk
@@ -1553,10 +1553,10 @@ parseBreakSingular parser input = do
15531553
15541554-- | Run a 'ParserK' over a 'StreamK'. Please use 'parseChunks' where possible,
15551555-- for better performance.
1556−{-# INLINE parseSingular #-}
1557−parseSingular :: Monad m =>
1556+{-# INLINE parse #-}
1557+parse :: Monad m =>
15581558 ParserK.ParserK a m b -> StreamK m a -> m (Either ParseError b)
1559−parseSingular f = fmap fst . parseBreakSingular f
1559+parse f = fmap fst . parseBreak f
15601560
15611561-------------------------------------------------------------------------------
15621562-- ParserK Chunked Generic
@@ -1586,13 +1586,13 @@ backTrackGenericChunks = go
15861586
15871587-- | Similar to 'parseBreak' but works on generic arrays
15881588--
1589−{-# INLINE_NORMAL parseBreakGenericChunks #-}
1590−parseBreakGenericChunks
1589+{-# INLINE_NORMAL parseBreakChunksGeneric #-}
1590+parseBreakChunksGeneric
15911591 :: forall m a b. Monad m
15921592 => ParserK.ParserK (GenArr.Array a) m b
15931593 -> StreamK m (GenArr.Array a)
15941594 -> m (Either ParseError b, StreamK m (GenArr.Array a))
1595−parseBreakGenericChunks parser input = do
1595+parseBreakChunksGeneric parser input = do
15961596 let parserk = ParserK.runParser parser parserDone 0 0
15971597 in go [] parserk input
15981598
@@ -1695,13 +1695,13 @@ parseBreakGenericChunks parser input = do
16951695 in foldStream
16961696 defState (yieldk backBuf parserk) single stop stream
16971697
1698−{-# INLINE parseGenericChunks #-}
1699−parseGenericChunks ::
1698+{-# INLINE parseChunksGeneric #-}
1699+parseChunksGeneric ::
17001700 (Monad m)
17011701 => ParserK.ParserK (GenArr.Array a) m b
17021702 -> StreamK m (GenArr.Array a)
17031703 -> m (Either ParseError b)
1704−parseGenericChunks f = fmap fst . parseBreakGenericChunks f
1704+parseChunksGeneric f = fmap fst . parseBreakChunksGeneric f
17051705
17061706-------------------------------------------------------------------------------
17071707-- Sorting