Skip to content

Commit 880e129

Browse files
committed
Use the newer APIs
1 parent b9f8d03 commit 880e129

4 files changed

Lines changed: 37 additions & 27 deletions

File tree

.github/workflows/build.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,13 @@ jobs:
4646
BUILD: ${{ matrix.build }}
4747
GHCVER: ${{ matrix.ghc_version }}
4848
#RESOLVER: ${{ matrix.resolver }}
49-
CABAL_BUILD_OPTIONS: ${{ matrix.cabal_build_options }}
49+
CABAL_BUILD_OPTIONS: >-
50+
-f drinkery
51+
-f conduit
52+
-f pipes
53+
-f machines
54+
-f streaming
55+
${{ matrix.cabal_build_options }}
5056
CABAL_PROJECT: ${{ matrix.cabal_project }}
5157
DISABLE_DOCS: ${{ matrix.disable_docs }}
5258
#DISABLE_SDIST_BUILD: ${{ matrix.disable_sdist_build }}
@@ -89,12 +95,13 @@ jobs:
8995
cabal-version: 3.10.1.0
9096
cabal_project: cabal.project.user
9197

92-
- name: 9.4.4
98+
- name: 9.4.4-no-fusion-plugin
9399
runner: ubuntu-latest
94100
ghc_version: 9.4.4
95101
build: cabal
96102
cabal-version: 3.8.1.0
97103
cabal_project: cabal.project.user
104+
cabal_build_options: no-fusion-plugin
98105

99106
- name: 9.4.4
100107
runner: ubuntu-latest

Benchmarks/Streamly.hs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Prelude
2020
import qualified Prelude as P
2121

2222
import qualified Streamly.Data.Fold as Fold
23+
import qualified Streamly.Data.Scanl as Scanl
2324
import qualified Streamly.Data.Stream as S
2425
import qualified Streamly.Data.StreamK as K
2526

@@ -152,7 +153,7 @@ scan, map,
152153

153154
mapM :: Monad m => Int -> Stream m Element -> m ()
154155

155-
scan n = composeN n $ S.scan (Fold.foldl' (+) 0)
156+
scan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0)
156157
map n = composeN n $ fmap (+1)
157158
mapM n = composeN n $ S.mapM return
158159
filterEven n = composeN n $ S.filter even
@@ -193,7 +194,7 @@ iterateMapM, iterateScan, iterateFilterEven, iterateTakeAll, iterateDropOne,
193194

194195
-- Scan increases the size of the stream by 1, drop 1 to not blow up the size
195196
-- due to many iterations.
196-
iterateScan n = K.toStream $ iterateSource (K.fromStream . S.drop 1 . S.scan (Fold.foldl' (+) 0) . K.toStream) maxIters n
197+
iterateScan n = K.toStream $ iterateSource (K.fromStream . S.drop 1 . S.scanl (Scanl.mkScanl (+) 0) . K.toStream) maxIters n
197198
-- iterateScan n = K.toStream $ iterateSource (K.drop 1 . K.scanl' (+) 0) maxIters n
198199

199200
-- iterateMapM n = K.toStream $ iterateSource (K.fromStream . S.mapM return . K.toStream) maxIters n
@@ -233,15 +234,15 @@ scanMap, dropMap, dropScan, takeDrop, takeScan, takeMap, filterDrop,
233234
filterTake, filterScan, filterMap
234235
:: Monad m => Int -> Stream m Element -> m ()
235236

236-
scanMap n = composeN n $ fmap (subtract 1) . S.scan (Fold.foldl' (+) 0)
237+
scanMap n = composeN n $ fmap (subtract 1) . S.scanl (Scanl.mkScanl (+) 0)
237238
dropMap n = composeN n $ fmap (subtract 1) . S.drop 1
238-
dropScan n = composeN n $ S.scan (Fold.foldl' (+) 0) . S.drop 1
239+
dropScan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0) . S.drop 1
239240
takeDrop n = composeN n $ S.drop 1 . S.take nElements
240-
takeScan n = composeN n $ S.scan (Fold.foldl' (+) 0) . S.take nElements
241+
takeScan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0) . S.take nElements
241242
takeMap n = composeN n $ fmap (subtract 1) . S.take nElements
242243
filterDrop n = composeN n $ S.drop 1 . S.filter (<= maxElem)
243244
filterTake n = composeN n $ S.take maxValue . S.filter (<= maxElem)
244-
filterScan n = composeN n $ S.scan (Fold.foldl' (+) 0) . S.filter (<= maxElem)
245+
filterScan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0) . S.filter (<= maxElem)
245246
filterMap n = composeN n $ fmap (subtract 1) . S.filter (<= maxElem)
246247

247248
-------------------------------------------------------------------------------

Benchmarks/StreamlyArray.hs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import Benchmarks.Common (value, maxValue) -- , appendValue)
2424
import qualified Streamly.Data.Stream as S
2525
import qualified Streamly.Data.Array as A
2626
import qualified Streamly.Data.Fold as Fold
27+
import qualified Streamly.Data.Scanl as Scanl
2728

2829
instance NFData (A.Array a) where
2930
{-# INLINE rnf #-}
@@ -37,7 +38,7 @@ type Stream = A.Array
3738

3839
{-# INLINE source #-}
3940
source :: 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 #-}
4849
sourceN :: 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)
108109
composeN 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)
136137
map n = composeN n $ fmap (+1)
137138
mapM n = composeN n $ S.mapM (\x -> P.return $ x + 1)
138139
filterEven n = composeN n $ S.filter even
@@ -158,7 +159,7 @@ maxIters = 100000
158159
iterateSource :: MonadIO m
159160
=> (S.Stream m Int -> S.Stream m Int) -> Int -> Int -> m (Stream Int)
160161
iterateSource 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
180181
iterateMapM n = iterateSource (S.mapM P.return) maxIters n
181182
iterateFilterEven n = iterateSource (S.filter even) maxIters n
182183
iterateTakeAll 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)
206207
dropMap 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
208209
takeDrop 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
210211
takeMap n = composeN n $ fmap (subtract 1) . S.take maxValue
211212
filterDrop n = composeN n $ S.drop 1 . S.filter (<= maxValue)
212213
filterTake 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)
214215
filterMap n = composeN n $ fmap (subtract 1) . S.filter (<= maxValue)
215216

216217
-------------------------------------------------------------------------------

Benchmarks/StreamlyPure.hs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import Prelude
2121
import qualified Prelude as P
2222

2323
import qualified Streamly.Data.Fold as Fold
24+
import qualified Streamly.Data.Scanl as Scanl
2425
import qualified Streamly.Data.Stream as S
2526
import qualified Streamly.Data.StreamK as K
2627

@@ -136,7 +137,7 @@ scan, map, mapM,
136137
dropOne, dropAll, dropWhileTrue, dropWhileFalse
137138
:: Int -> Stream Int -> ()
138139

139-
scan n = composeN n $ S.scan (Fold.foldl' (+) 0)
140+
scan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0)
140141
map n = composeN n $ fmap (+1)
141142
mapM = map
142143
filterEven n = composeN n $ S.filter even
@@ -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 = K.toStream $ iterateSource (K.fromStream . S.drop 1 . S.scan (Fold.foldl' (+) 0) . K.toStream) (maxIters `P.div` 100) n
180+
iterateScan n = K.toStream $ iterateSource (K.fromStream . S.drop 1 . S.scanl (Scanl.mkScanl (+) 0) . K.toStream) (maxIters `P.div` 100) n
180181
-- iterateScan n = K.toStream $ iterateSource (K.scanl' (+) 0) (maxIters `div` 100) n
181182

182183
-- iterateMapM n = K.toStream $ iterateSource (K.fromStream . S.mapM return . K.toStream) maxIters n
@@ -216,15 +217,15 @@ scanMap, dropMap, dropScan, takeDrop, takeScan, takeMap, filterDrop,
216217
filterTake, filterScan, filterMap
217218
:: Int -> Stream Int -> ()
218219

219-
scanMap n = composeN n $ fmap (subtract 1) . S.scan (Fold.foldl' (+) 0)
220+
scanMap n = composeN n $ fmap (subtract 1) . S.scanl (Scanl.mkScanl (+) 0)
220221
dropMap n = composeN n $ fmap (subtract 1) . S.drop 1
221-
dropScan n = composeN n $ S.scan (Fold.foldl' (+) 0) . S.drop 1
222+
dropScan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0) . S.drop 1
222223
takeDrop n = composeN n $ S.drop 1 . S.take maxValue
223-
takeScan n = composeN n $ S.scan (Fold.foldl' (+) 0) . S.take maxValue
224+
takeScan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0) . S.take maxValue
224225
takeMap n = composeN n $ fmap (subtract 1) . S.take maxValue
225226
filterDrop n = composeN n $ S.drop 1 . S.filter (<= maxValue)
226227
filterTake n = composeN n $ S.take maxValue . S.filter (<= maxValue)
227-
filterScan n = composeN n $ S.scan (Fold.foldl' (+) 0) . S.filter (<= maxBound)
228+
filterScan n = composeN n $ S.scanl (Scanl.mkScanl (+) 0) . S.filter (<= maxBound)
228229
filterMap n = composeN n $ fmap (subtract 1) . S.filter (<= maxValue)
229230

230231
-------------------------------------------------------------------------------

0 commit comments

Comments
 (0)