Skip to content

Commit 70784a9

Browse files
Move array stream parsing funcs to array modules
1 parent 3e894fe commit 70784a9

10 files changed

Lines changed: 657 additions & 600 deletions

File tree

benchmark/Streamly/Benchmark/Data/ParserK.hs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
-- License : BSD-3-Clause
66
-- Maintainer : streamly@composewell.com
77

8-
-- BENCH_CHUNKED -> adaptC
9-
-- BENCH_CHUNKED_GENERIC -> adaptCG
10-
-- BENCH_SINGULAR -> adapt
8+
-- BENCH_CHUNKED -> parse from Array stream
9+
-- BENCH_CHUNKED_GENERIC -> parse from Generic Array stream
10+
-- BENCH_SINGULAR -> parse from single element stream
1111

1212
{-# LANGUAGE CPP #-}
1313
{-# LANGUAGE FlexibleContexts #-}
@@ -24,11 +24,9 @@ import Control.Monad.IO.Class (MonadIO)
2424
import Data.Foldable (asum)
2525
#ifdef BENCH_CHUNKED
2626
import Streamly.Data.Array (Array, Unbox)
27-
import qualified Streamly.Internal.Data.Array as Array (chunksOf)
2827
#endif
2928
#ifdef BENCH_CHUNKED_GENERIC
3029
import Streamly.Data.Array.Generic (Array)
31-
import qualified Streamly.Internal.Data.Array.Generic as GenArr (chunksOf)
3230
#endif
3331
import Streamly.Internal.Data.Fold (Fold(..))
3432
import Streamly.Data.StreamK (StreamK)
@@ -48,6 +46,11 @@ import qualified Streamly.Internal.Data.Fold as Fold
4846
import qualified Streamly.Data.Parser as PRD
4947
import qualified Streamly.Internal.Data.ParserK as PR
5048
import qualified Streamly.Internal.Data.StreamK as StreamK
49+
#ifdef BENCH_CHUNKED
50+
import qualified Streamly.Internal.Data.Array as Array
51+
#elif defined(BENCH_CHUNKED_GENERIC)
52+
import qualified Streamly.Internal.Data.Array.Generic as GenArr
53+
#endif
5154

5255
import Test.Tasty.Bench
5356
import Streamly.Benchmark.Common
@@ -58,8 +61,8 @@ import Streamly.Benchmark.Common
5861

5962
#ifdef BENCH_CHUNKED
6063

61-
#define PARSE_OP StreamK.parseChunks
62-
#define FROM_PARSER adaptC
64+
#define PARSE_OP Array.parse
65+
#define FROM_PARSER Array.parserK
6366
#define INPUT (Array a)
6467
#define PARSE_ELEM (Array Int)
6568
#define CONSTRAINT_IO (MonadIO m, Unbox a)
@@ -70,8 +73,8 @@ import Streamly.Benchmark.Common
7073

7174
#ifdef BENCH_CHUNKED_GENERIC
7275

73-
#define PARSE_OP StreamK.parseChunksGeneric
74-
#define FROM_PARSER adaptCG
76+
#define PARSE_OP GenArr.parse
77+
#define FROM_PARSER GenArr.parserK
7578
#define INPUT (Array a)
7679
#define PARSE_ELEM (Array Int)
7780
#define CONSTRAINT_IO (MonadIO m)
@@ -83,7 +86,7 @@ import Streamly.Benchmark.Common
8386
#ifdef BENCH_SINGULAR
8487

8588
#define PARSE_OP StreamK.parse
86-
#define FROM_PARSER adapt
89+
#define FROM_PARSER PR.adapt
8790
#define INPUT a
8891
#define PARSE_ELEM Int
8992
#define CONSTRAINT_IO (MonadIO m)
@@ -136,18 +139,18 @@ one value = PARSE_OP p
136139
where
137140

138141
p = do
139-
m <- PR.FROM_PARSER (PRD.fromFold FL.one)
142+
m <- FROM_PARSER (PRD.fromFold FL.one)
140143
case m of
141144
Just i -> if i >= value then pure m else p
142145
Nothing -> pure Nothing
143146

144147
{-# INLINE satisfy #-}
145148
satisfy :: CONSTRAINT_IO => (a -> Bool) -> PR.ParserK INPUT m a
146-
satisfy = PR.FROM_PARSER . PRD.satisfy
149+
satisfy = FROM_PARSER . PRD.satisfy
147150

148151
{-# INLINE takeWhile #-}
149152
takeWhile :: CONSTRAINT_IO => (a -> Bool) -> PR.ParserK INPUT m ()
150-
takeWhile p = PR.FROM_PARSER $ PRD.takeWhile p FL.drain
153+
takeWhile p = FROM_PARSER $ PRD.takeWhile p FL.drain
151154

152155
{-# INLINE takeWhileK #-}
153156
takeWhileK :: MonadIO m =>
@@ -240,7 +243,7 @@ takeWhileFailD predicate (Fold fstep finitial _ ffinal) =
240243
{-# INLINE takeWhileFail #-}
241244
takeWhileFail :: CONSTRAINT =>
242245
(a -> Bool) -> Fold m a b -> PR.ParserK INPUT m b
243-
takeWhileFail p f = PR.FROM_PARSER (takeWhileFailD p f)
246+
takeWhileFail p f = FROM_PARSER (takeWhileFailD p f)
244247

245248
{-# INLINE alt2 #-}
246249
alt2 :: MonadIO m

benchmark/streamly-benchmarks.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,6 @@ benchmark Data.Parser
349349
else
350350
ghc-options: +RTS -M2500M -RTS
351351

352-
-- XXX This is chunked?
353352
benchmark Data.ParserK
354353
import: bench-options
355354
type: exitcode-stdio-1.0

core/src/Streamly/Data/ParserK.hs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ module Streamly.Data.ParserK
107107
-- * Parsers
108108
-- ** Conversions
109109
, adapt
110-
, adaptC
111-
, adaptCG
112110
-- , toParser
113111

114112
-- ** Without Input
@@ -119,6 +117,8 @@ module Streamly.Data.ParserK
119117
-- * Deprecated
120118
, fromFold
121119
, fromParser
120+
, adaptC
121+
, adaptCG
122122
)
123123

124124
where
@@ -128,18 +128,19 @@ import Streamly.Internal.Data.Fold (Fold)
128128
import Streamly.Internal.Data.Unbox (Unbox)
129129
import Streamly.Internal.Data.Array (Array)
130130
import qualified Streamly.Internal.Data.Parser as ParserD
131+
import qualified Streamly.Internal.Data.Array as Array
131132

132-
import Streamly.Internal.Data.ParserK.Type
133+
import Streamly.Internal.Data.ParserK
133134

134135
#include "DocTestDataParserK.hs"
135136

136-
{-# DEPRECATED fromFold "Please use \"ParserK.adaptC . Parser.fromFold\" instead." #-}
137+
{-# DEPRECATED fromFold "Please use \"Array.parserK . Parser.fromFold\" instead." #-}
137138
{-# INLINE fromFold #-}
138139
fromFold :: (MonadIO m, Unbox a) => Fold m a b -> ParserK (Array a) m b
139-
fromFold = adaptC . ParserD.fromFold
140+
fromFold = Array.parserK . ParserD.fromFold
140141

141-
{-# DEPRECATED fromParser "Please use \"adaptC\" instead." #-}
142+
{-# DEPRECATED fromParser "Please use \"Array.parserK\" instead." #-}
142143
{-# INLINE fromParser #-}
143144
fromParser ::
144145
(MonadIO m, Unbox a) => ParserD.Parser a m b -> ParserK (Array a) m b
145-
fromParser = adaptC
146+
fromParser = Array.parserK

core/src/Streamly/Data/StreamK.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,6 @@ module Streamly.Data.StreamK
124124
-- ** Parsing
125125
, parse
126126
, parseBreak
127-
, parseBreakChunks
128-
, parseChunks
129127

130128
-- * Transformation
131129
, mapM
@@ -186,6 +184,10 @@ module Streamly.Data.StreamK
186184
-- | Please note that 'Stream' type does not observe any exceptions from
187185
-- the consumer of the stream whereas 'StreamK' does.
188186
, bracketIO
187+
188+
-- * Deprecated
189+
, parseBreakChunks
190+
, parseChunks
189191
)
190192
where
191193

0 commit comments

Comments
 (0)