@@ -24,6 +24,7 @@ import Benchmarks.Common (value, maxValue) -- , appendValue)
2424import qualified Streamly.Data.Stream as S
2525import qualified Streamly.Data.Array as A
2626import qualified Streamly.Data.Fold as Fold
27+ import qualified Streamly.Data.Scanl as Scanl
2728
2829instance NFData (A. Array a ) where
2930 {-# INLINE rnf #-}
@@ -37,7 +38,7 @@ type Stream = A.Array
3738
3839{-# INLINE source #-}
3940source :: MonadIO m => Int -> m (Stream Int )
40- source n = S. fold (A. writeN value) (S. unfoldr step n)
41+ source n = S. fold (A. createOf value) (S. unfoldr step n)
4142 where
4243 step cnt =
4344 if cnt > n + value
@@ -46,7 +47,7 @@ source n = S.fold (A.writeN value) (S.unfoldr step n)
4647
4748{-# INLINE sourceN #-}
4849sourceN :: MonadIO m => Int -> Int -> m (Stream Int )
49- sourceN count begin = S. fold (A. writeN value) (S. unfoldr step begin)
50+ sourceN count begin = S. fold (A. createOf value) (S. unfoldr step begin)
5051 where
5152 step i =
5253 if i > begin + count
@@ -107,10 +108,10 @@ composeN
107108 -> m (Stream Int )
108109composeN n f x =
109110 case n of
110- 1 -> S. fold A. write $ f $ S. unfold A. reader x
111- 2 -> S. fold A. write $ f . f $ S. unfold A. reader x
112- 3 -> S. fold A. write $ f . f . f $ S. unfold A. reader x
113- 4 -> S. fold A. write $ f . f . f . f $ S. unfold A. reader x
111+ 1 -> S. fold A. create $ f $ S. unfold A. reader x
112+ 2 -> S. fold A. create $ f . f $ S. unfold A. reader x
113+ 3 -> S. fold A. create $ f . f . f $ S. unfold A. reader x
114+ 4 -> S. fold A. create $ f . f . f . f $ S. unfold A. reader x
114115 _ -> undefined
115116
116117{-# INLINE scan #-}
@@ -132,7 +133,7 @@ scan, map, mapM,
132133 dropOne, dropAll, dropWhileTrue, dropWhileFalse
133134 :: MonadIO m => Int -> Stream Int -> m (Stream Int )
134135
135- scan n = composeN n $ S. scan ( Fold. foldl' (+) 0 )
136+ scan n = composeN n $ S. scanl ( Scanl. mkScanl (+) 0 )
136137map n = composeN n $ fmap (+ 1 )
137138mapM n = composeN n $ S. mapM (\ x -> P. return $ x + 1 )
138139filterEven n = composeN n $ S. filter even
@@ -158,7 +159,7 @@ maxIters = 100000
158159iterateSource :: MonadIO m
159160 => (S. Stream m Int -> S. Stream m Int ) -> Int -> Int -> m (Stream Int )
160161iterateSource g i n =
161- sourceN iterStreamLen n P. >>= \ a -> S. fold A. write (f i $ S. unfold A. reader a)
162+ sourceN iterStreamLen n P. >>= \ a -> S. fold A. create (f i $ S. unfold A. reader a)
162163 where
163164 f (0 :: Int ) m = g m
164165 f x m = g (f (x P. - 1 ) m)
@@ -176,7 +177,7 @@ iterateMapM, iterateScan, iterateFilterEven, iterateTakeAll, iterateDropOne,
176177
177178-- Scan increases the size of the stream by 1, drop 1 to not blow up the size
178179-- due to many iterations.
179- iterateScan n = iterateSource (S. drop 1 . S. scan ( Fold. foldl' (+) 0 )) (maxIters `div` 100 ) n
180+ iterateScan n = iterateSource (S. drop 1 . S. scanl ( Scanl. mkScanl (+) 0 )) (maxIters `div` 100 ) n
180181iterateMapM n = iterateSource (S. mapM P. return ) maxIters n
181182iterateFilterEven n = iterateSource (S. filter even ) maxIters n
182183iterateTakeAll n = iterateSource (S. take maxValue) maxIters n
@@ -202,15 +203,15 @@ scanMap, dropMap, dropScan, takeDrop, takeScan, takeMap, filterDrop,
202203 filterTake, filterScan, filterMap
203204 :: MonadIO m => Int -> Stream Int -> m (Stream Int )
204205
205- scanMap n = composeN n $ fmap (subtract 1 ) . S. scan ( Fold. foldl' (+) 0 )
206+ scanMap n = composeN n $ fmap (subtract 1 ) . S. scanl ( Scanl. mkScanl (+) 0 )
206207dropMap n = composeN n $ fmap (subtract 1 ) . S. drop 1
207- dropScan n = composeN n $ S. scan ( Fold. foldl' (+) 0 ) . S. drop 1
208+ dropScan n = composeN n $ S. scanl ( Scanl. mkScanl (+) 0 ) . S. drop 1
208209takeDrop n = composeN n $ S. drop 1 . S. take maxValue
209- takeScan n = composeN n $ S. scan ( Fold. foldl' (+) 0 ) . S. take maxValue
210+ takeScan n = composeN n $ S. scanl ( Scanl. mkScanl (+) 0 ) . S. take maxValue
210211takeMap n = composeN n $ fmap (subtract 1 ) . S. take maxValue
211212filterDrop n = composeN n $ S. drop 1 . S. filter (<= maxValue)
212213filterTake n = composeN n $ S. take maxValue . S. filter (<= maxValue)
213- filterScan n = composeN n $ S. scan ( Fold. foldl' (+) 0 ) . S. filter (<= maxBound )
214+ filterScan n = composeN n $ S. scanl ( Scanl. mkScanl (+) 0 ) . S. filter (<= maxBound )
214215filterMap n = composeN n $ fmap (subtract 1 ) . S. filter (<= maxValue)
215216
216217-------------------------------------------------------------------------------
0 commit comments