on master help sign in
Change the order of arguments in Unfold.fold

To keep it consistent with Stream.fold.

commitae741f1bd8b792f614046219a09f255848515949 authorHarendra Kumar <harendra@composewell.com> dateThu 25 Mar 2021, 02:18 (6 years ago) parentca60ffa
4 files changed+20−22
benchmark/Streamly/Benchmark/Data/Unfold.hs+11−13 benchmark/Streamly/Benchmark/FileSystem/Handle/ReadWrite.hs+4−4 benchmark/Streamly/Benchmark/Prelude/Serial/Exceptions.hs+3−3 src/Streamly/Internal/Data/Unfold.hs+2−2
benchmark/Streamly/Benchmark/Data/Unfold.hs+11−13
@@ -62,7 +62,7 @@ source n = UF.enumerateFromToIntegral n
6262
6363{-# INLINE drainGeneration #-}
6464drainGeneration :: Monad m => Unfold m a b -> a -> m ()
65−drainGeneration unf seed = UF.fold unf FL.drain seed
65+drainGeneration unf seed = UF.fold FL.drain unf seed
6666
6767{-# INLINE drainTransformation #-}
6868drainTransformation ::
@@ -409,7 +409,7 @@ toNullAp value start =
409409 let end = start + nthRoot 2 value
410410 s = source end
411411 -- in UF.fold ((+) <$> s <*> s) FL.drain start
412− in UF.fold ((+) `fmap` s `UF.apply` s) FL.drain start
412+ in UF.fold FL.drain ((+) `fmap` s `UF.apply` s) start
413413
414414{-# INLINE _apDiscardFst #-}
415415_apDiscardFst :: Int -> Int -> m ()
@@ -451,7 +451,7 @@ toNull value start =
451451 u = src `UF.bind` \x ->
452452 src `UF.bind` \y ->
453453 UF.yield (x + y)
454− in UF.fold u FL.drain start
454+ in UF.fold FL.drain u start
455455
456456
457457{-# INLINE toNull3 #-}
@@ -469,7 +469,7 @@ toNull3 value start =
469469 u = src `UF.bind` \x ->
470470 src `UF.bind` \y ->
471471 UF.yield (x + y)
472− in UF.fold u FL.drain start
472+ in UF.fold FL.drain u start
473473
474474{-# INLINE toList #-}
475475toList :: Monad m => Int -> Int -> m [Int]
@@ -485,7 +485,7 @@ toList value start = do
485485 u = src `UF.bind` \x ->
486486 src `UF.bind` \y ->
487487 UF.yield (x + y)
488− in UF.fold u FL.toList start
488+ in UF.fold FL.toList u start
489489
490490{-# INLINE toListSome #-}
491491toListSome :: Monad m => Int -> Int -> m [Int]
@@ -501,7 +501,7 @@ toListSome value start = do
501501 u = src `UF.bind` \x ->
502502 src `UF.bind` \y ->
503503 UF.yield (x + y)
504− in UF.fold (UF.take 1000 u) FL.toList start
504+ in UF.fold FL.toList (UF.take 1000 u) start
505505
506506{-# INLINE filterAllOut #-}
507507filterAllOut :: Monad m => Int -> Int -> m ()
@@ -519,7 +519,7 @@ filterAllOut value start = do
519519 in if s < 0
520520 then UF.yield s
521521 else UF.nilM (return . const ())
522− in UF.fold u FL.drain start
522+ in UF.fold FL.drain u start
523523
524524{-# INLINE filterAllIn #-}
525525filterAllIn :: Monad m => Int -> Int -> m ()
@@ -537,7 +537,7 @@ filterAllIn value start = do
537537 in if s > 0
538538 then UF.yield s
539539 else UF.nilM (return . const ())
540− in UF.fold u FL.drain start
540+ in UF.fold FL.drain u start
541541
542542{-# INLINE filterSome #-}
543543filterSome :: Monad m => Int -> Int -> m ()
@@ -555,7 +555,7 @@ filterSome value start = do
555555 in if s > 1100000
556556 then UF.yield s
557557 else UF.nilM (return . const ())
558− in UF.fold u FL.drain start
558+ in UF.fold FL.drain u start
559559
560560{-# INLINE breakAfterSome #-}
561561breakAfterSome :: Int -> Int -> IO ()
@@ -574,7 +574,7 @@ breakAfterSome value start =
574574 then error "break"
575575 else UF.yield s
576576 in do
577− (_ :: Either ErrorCall ()) <- try $ UF.fold u FL.drain start
577+ (_ :: Either ErrorCall ()) <- try $ UF.fold FL.drain u start
578578 return ()
579579
580580-------------------------------------------------------------------------------
@@ -590,9 +590,7 @@ concatCount linearCount =
590590concat :: Monad m => Int -> Int -> m ()
591591concat linearCount start = do
592592 let end = start + concatCount linearCount
593− UF.fold
594− (UF.many (source end) (source end))
595− FL.drain start
593+ UF.fold FL.drain (UF.many (source end) (source end)) start
596594
597595-------------------------------------------------------------------------------
598596-- Benchmarks
benchmark/Streamly/Benchmark/FileSystem/Handle/ReadWrite.hs+4−4
@@ -132,7 +132,7 @@ inspect $ 'readWithBufferOfFromBytesNull `hasNoType` ''D.FoldMany
132132-- | Send the chunk content ('defaultChunkSize') to /dev/null
133133-- Implicitly benchmarked via 'readFromBytesNull'
134134_readChunks :: Handle -> Handle -> IO ()
135−_readChunks inh devNull = IUF.fold unf fld inh
135+_readChunks inh devNull = IUF.fold fld unf inh
136136
137137 where
138138
@@ -142,7 +142,7 @@ _readChunks inh devNull = IUF.fold unf fld inh
142142-- | Send the chunk content to /dev/null
143143-- Implicitly benchmarked via 'readWithBufferOfFromBytesNull'
144144_readChunksWithBufferOf :: Handle -> Handle -> IO ()
145−_readChunksWithBufferOf inh devNull = IUF.fold unf fld (defaultChunkSize, inh)
145+_readChunksWithBufferOf inh devNull = IUF.fold fld unf (defaultChunkSize, inh)
146146
147147 where
148148
@@ -163,7 +163,7 @@ o_1_space_copy_fromBytes env =
163163-- | Send the file contents ('defaultChunkSize') to /dev/null
164164{-# NOINLINE writeReadWithBufferOf #-}
165165writeReadWithBufferOf :: Handle -> Handle -> IO ()
166−writeReadWithBufferOf inh devNull = IUF.fold unf fld (defaultChunkSize, inh)
166+writeReadWithBufferOf inh devNull = IUF.fold fld unf (defaultChunkSize, inh)
167167
168168 where
169169
@@ -181,7 +181,7 @@ inspect $ 'writeReadWithBufferOf `hasNoType` ''AT.ArrayUnsafe -- FH.write/writeN
181181-- | Send the file contents ('AT.defaultChunkSize') to /dev/null
182182{-# NOINLINE writeRead #-}
183183writeRead :: Handle -> Handle -> IO ()
184−writeRead inh devNull = IUF.fold unf fld inh
184+writeRead inh devNull = IUF.fold fld unf inh
185185
186186 where
187187
benchmark/Streamly/Benchmark/Prelude/Serial/Exceptions.hs+3−3
@@ -135,7 +135,7 @@ o_1_space_copy_stream_exceptions env =
135135readChunksOnException :: Handle -> Handle -> IO ()
136136readChunksOnException inh devNull =
137137 let readEx = IUF.onException (\_ -> hClose inh) FH.readChunks
138− in IUF.fold readEx (IFH.writeChunks devNull) inh
138+ in IUF.fold (IFH.writeChunks devNull) readEx inh
139139
140140#ifdef INSPECTION
141141inspect $ hasNoTypeClasses 'readChunksOnException
@@ -146,7 +146,7 @@ inspect $ hasNoTypeClasses 'readChunksOnException
146146readChunksBracket_ :: Handle -> Handle -> IO ()
147147readChunksBracket_ inh devNull =
148148 let readEx = IUF.bracket_ return (\_ -> hClose inh) FH.readChunks
149− in IUF.fold readEx (IFH.writeChunks devNull) inh
149+ in IUF.fold (IFH.writeChunks devNull) readEx inh
150150
151151#ifdef INSPECTION
152152inspect $ hasNoTypeClasses 'readChunksBracket_
@@ -156,7 +156,7 @@ inspect $ hasNoTypeClasses 'readChunksBracket_
156156readChunksBracket :: Handle -> Handle -> IO ()
157157readChunksBracket inh devNull =
158158 let readEx = IUF.bracket return (\_ -> hClose inh) FH.readChunks
159− in IUF.fold readEx (IFH.writeChunks devNull) inh
159+ in IUF.fold (IFH.writeChunks devNull) readEx inh
160160
161161o_1_space_copy_exceptions_readChunks :: BenchEnv -> [Benchmark]
162162o_1_space_copy_exceptions_readChunks env =
src/Streamly/Internal/Data/Unfold.hs+2−2
@@ -328,8 +328,8 @@ swap = lmap Tuple.swap
328328-- /Pre-release/
329329--
330330{-# INLINE_NORMAL fold #-}
331−fold :: Monad m => Unfold m a b -> Fold m b c -> a -> m c
332−fold (Unfold ustep inject) (Fold fstep initial extract) a = do
331+fold :: Monad m => Fold m b c -> Unfold m a b -> a -> m c
332+fold (Fold fstep initial extract) (Unfold ustep inject) a = do
333333 res <- initial
334334 case res of
335335 FL.Partial x -> inject a >>= go SPEC x