@@ -37,7 +37,7 @@ type Stream = A.Array
3737
3838{-# INLINE source #-}
3939source :: MonadIO m => Int -> m (Stream Int )
40- source n = S. fold (A. writeN value) (S. unfoldr step n)
40+ source n = S. fold (A. createOf value) (S. unfoldr step n)
4141 where
4242 step cnt =
4343 if cnt > n + value
@@ -46,7 +46,7 @@ source n = S.fold (A.writeN value) (S.unfoldr step n)
4646
4747{-# INLINE sourceN #-}
4848sourceN :: MonadIO m => Int -> Int -> m (Stream Int )
49- sourceN count begin = S. fold (A. writeN value) (S. unfoldr step begin)
49+ sourceN count begin = S. fold (A. createOf value) (S. unfoldr step begin)
5050 where
5151 step i =
5252 if i > begin + count
@@ -107,10 +107,10 @@ composeN
107107 -> m (Stream Int )
108108composeN n f x =
109109 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
110+ 1 -> S. fold A. create $ f $ S. unfold A. reader x
111+ 2 -> S. fold A. create $ f . f $ S. unfold A. reader x
112+ 3 -> S. fold A. create $ f . f . f $ S. unfold A. reader x
113+ 4 -> S. fold A. create $ f . f . f . f $ S. unfold A. reader x
114114 _ -> undefined
115115
116116{-# INLINE scan #-}
@@ -132,7 +132,7 @@ scan, map, mapM,
132132 dropOne, dropAll, dropWhileTrue, dropWhileFalse
133133 :: MonadIO m => Int -> Stream Int -> m (Stream Int )
134134
135- scan n = composeN n $ S. scan (Fold. foldl' (+) 0 )
135+ scan n = composeN n $ S. scanl (Fold. foldl' (+) 0 )
136136map n = composeN n $ fmap (+ 1 )
137137mapM n = composeN n $ S. mapM (\ x -> P. return $ x + 1 )
138138filterEven n = composeN n $ S. filter even
@@ -158,7 +158,7 @@ maxIters = 100000
158158iterateSource :: MonadIO m
159159 => (S. Stream m Int -> S. Stream m Int ) -> Int -> Int -> m (Stream Int )
160160iterateSource g i n =
161- sourceN iterStreamLen n P. >>= \ a -> S. fold A. write (f i $ S. unfold A. reader a)
161+ sourceN iterStreamLen n P. >>= \ a -> S. fold A. create (f i $ S. unfold A. reader a)
162162 where
163163 f (0 :: Int ) m = g m
164164 f x m = g (f (x P. - 1 ) m)
@@ -176,7 +176,7 @@ iterateMapM, iterateScan, iterateFilterEven, iterateTakeAll, iterateDropOne,
176176
177177-- Scan increases the size of the stream by 1, drop 1 to not blow up the size
178178-- due to many iterations.
179- iterateScan n = iterateSource (S. drop 1 . S. scan (Fold. foldl' (+) 0 )) (maxIters `div` 100 ) n
179+ iterateScan n = iterateSource (S. drop 1 . S. scanl (Fold. foldl' (+) 0 )) (maxIters `div` 100 ) n
180180iterateMapM n = iterateSource (S. mapM P. return ) maxIters n
181181iterateFilterEven n = iterateSource (S. filter even ) maxIters n
182182iterateTakeAll n = iterateSource (S. take maxValue) maxIters n
@@ -202,15 +202,15 @@ scanMap, dropMap, dropScan, takeDrop, takeScan, takeMap, filterDrop,
202202 filterTake, filterScan, filterMap
203203 :: MonadIO m => Int -> Stream Int -> m (Stream Int )
204204
205- scanMap n = composeN n $ fmap (subtract 1 ) . S. scan (Fold. foldl' (+) 0 )
205+ scanMap n = composeN n $ fmap (subtract 1 ) . S. scanl (Fold. foldl' (+) 0 )
206206dropMap n = composeN n $ fmap (subtract 1 ) . S. drop 1
207- dropScan n = composeN n $ S. scan (Fold. foldl' (+) 0 ) . S. drop 1
207+ dropScan n = composeN n $ S. scanl (Fold. foldl' (+) 0 ) . S. drop 1
208208takeDrop n = composeN n $ S. drop 1 . S. take maxValue
209- takeScan n = composeN n $ S. scan (Fold. foldl' (+) 0 ) . S. take maxValue
209+ takeScan n = composeN n $ S. scanl (Fold. foldl' (+) 0 ) . S. take maxValue
210210takeMap n = composeN n $ fmap (subtract 1 ) . S. take maxValue
211211filterDrop n = composeN n $ S. drop 1 . S. filter (<= maxValue)
212212filterTake n = composeN n $ S. take maxValue . S. filter (<= maxValue)
213- filterScan n = composeN n $ S. scan (Fold. foldl' (+) 0 ) . S. filter (<= maxBound )
213+ filterScan n = composeN n $ S. scanl (Fold. foldl' (+) 0 ) . S. filter (<= maxBound )
214214filterMap n = composeN n $ fmap (subtract 1 ) . S. filter (<= maxValue)
215215
216216-------------------------------------------------------------------------------
0 commit comments