on master help sign in
Expose rollinghash and intercalate
a75c178Harendra Kumar
benchmark/Streamly/Benchmark/Prelude/Serial/Transformation1.hs+14−1
@@ -33,6 +33,7 @@ import Test.Inspection
33import qualified Streamly.Prelude as S
33import qualified Streamly.Prelude as S
34import qualified Streamly.Internal.Data.Stream.IsStream as Internal
34import qualified Streamly.Internal.Data.Stream.IsStream as Internal
35import qualified Streamly.Internal.Data.Fold as FL
35import qualified Streamly.Internal.Data.Fold as FL
36+import qualified Streamly.Internal.Data.Unfold as Unfold
36import qualified Prelude
37import qualified Prelude
37
38
38import Gauge
39import Gauge
@@ -482,12 +483,24 @@ intersperseM value n = composeN n $ S.intersperseM (return $ value + 1)
482insertBy :: MonadIO m => Int -> Int -> SerialT m Int -> m ()
483insertBy :: MonadIO m => Int -> Int -> SerialT m Int -> m ()
483insertBy value n = composeN n $ S.insertBy compare (value + 1)
484insertBy value n = composeN n $ S.insertBy compare (value + 1)
484
485
486+{-# INLINE interposeSuffix #-}
487+interposeSuffix :: S.MonadAsync m => Int -> Int -> SerialT m Int -> m ()
488+interposeSuffix value n =
489+ composeN n $ Internal.interposeSuffix (value + 1) Unfold.identity
490+
491+{-# INLINE intercalateSuffix #-}
492+intercalateSuffix :: S.MonadAsync m => Int -> Int -> SerialT m Int -> m ()
493+intercalateSuffix value n =
494+ composeN n $ Internal.intercalateSuffix (value + 1) Unfold.identity
495+
485o_1_space_inserting :: Int -> [Benchmark]
496o_1_space_inserting :: Int -> [Benchmark]
486o_1_space_inserting value =
497o_1_space_inserting value =
487− [ bgroup "filtering"
498+ [ bgroup "inserting"
488 [ benchIOSink value "intersperse" (intersperse value 1)
499 [ benchIOSink value "intersperse" (intersperse value 1)
489 , benchIOSink value "intersperseM" (intersperseM value 1)
500 , benchIOSink value "intersperseM" (intersperseM value 1)
490 , benchIOSink value "insertBy" (insertBy value 1)
501 , benchIOSink value "insertBy" (insertBy value 1)
502+ , benchIOSink value "interposeSuffix" (interposeSuffix value 1)
503+ , benchIOSink value "intercalateSuffix" (intercalateSuffix value 1)
491 ]
504 ]
492 ]
505 ]
493
506
src/Streamly/Data/Fold.hs+2−1
@@ -150,7 +150,8 @@ module Streamly.Data.Fold
150 , mean
150 , mean
151 , variance
151 , variance
152 , stdDev
152 , stdDev
153−
153+ , rollingHash
154+ , rollingHashWithSalt
154
155
155 -- Collectors
156 -- Collectors
156 , toList
157 , toList
src/Streamly/Prelude.hs+2
@@ -756,6 +756,8 @@ module Streamly.Prelude
756
756
757 -- ** Nested Unfolds
757 -- ** Nested Unfolds
758 , unfoldMany
758 , unfoldMany
759+ , intercalate
760+ , intercalateSuffix
759
761
760 -- ** Nested Streams
762 -- ** Nested Streams
761 -- | Stream operations like map and filter represent loop processing in
763 -- | Stream operations like map and filter represent loop processing in
src/Streamly/Unicode/Stream.hs+10
@@ -43,6 +43,16 @@
43-- can be used for convenience when specifying unicode strings literals using
43-- can be used for convenience when specifying unicode strings literals using
44-- these types.
44-- these types.
45--
45--
46+-- = Idioms
47+--
48+-- Some simple text processing operations can be represented simply as
49+-- operations on Char streams. Follow the links for the following idioms:
50+--
51+-- * 'Streamly.Internal.Unicode.Stream.lines'
52+-- * 'Streamly.Internal.Unicode.Stream.words'
53+-- * 'Streamly.Internal.Unicode.Stream.unlines'
54+-- * 'Streamly.Internal.Unicode.Stream.unwords'
55+--
46-- = Pitfalls
56-- = Pitfalls
47--
57--
48-- * Case conversion: Some unicode characters translate to more than one code
58-- * Case conversion: Some unicode characters translate to more than one code