on master help sign in
Remove dependency of Array module on Data.Fold
6551e49Harendra Kumar
src/Streamly/Internal/Data/Array/Storable/Foreign/Mut/Types.hs+3−2
@@ -121,9 +121,10 @@ import Text.Read (readPrec, readListPrec, readListPrecDefault)
121import qualified Data.Foldable as F
121import qualified Data.Foldable as F
122#endif
122#endif
123import qualified GHC.Exts as Exts
123import qualified GHC.Exts as Exts
124−import qualified Streamly.Internal.Data.Fold as FL
124+import qualified Streamly.Internal.Data.Fold.Types as FL
125import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
125import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
126−import qualified Streamly.Internal.Data.Stream.StreamK as K
126+import qualified Streamly.Internal.Data.Stream.StreamK as K (foldl')
127+import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
127import qualified Streamly.Internal.Foreign.Malloc as Malloc
128import qualified Streamly.Internal.Foreign.Malloc as Malloc
128
129
129import Prelude hiding (length, foldr, read, unlines, splitAt)
130import Prelude hiding (length, foldr, read, unlines, splitAt)
src/Streamly/Internal/Data/Array/Storable/Foreign/Types.hs+1−1
@@ -105,7 +105,7 @@ import Text.Read (readPrec, readListPrec, readListPrecDefault)
105import Prelude hiding (length, foldr, read, unlines, splitAt)
105import Prelude hiding (length, foldr, read, unlines, splitAt)
106
106
107import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
107import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
108−import qualified Streamly.Internal.Data.Stream.StreamK as K
108+import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
109import qualified Streamly.Internal.Data.Array.Storable.Foreign.Mut.Types as MA
109import qualified Streamly.Internal.Data.Array.Storable.Foreign.Mut.Types as MA
110import qualified Streamly.Internal.Data.Fold.Types as Fold
110import qualified Streamly.Internal.Data.Fold.Types as Fold
111import qualified GHC.Exts as Exts
111import qualified GHC.Exts as Exts
src/Streamly/Internal/Data/Fold.hs−13
@@ -715,19 +715,6 @@ foldMapM act = mkAccumM_ step (pure mempty)
715-- To Containers
715-- To Containers
716------------------------------------------------------------------------------
716------------------------------------------------------------------------------
717
717
718−-- | Folds the input stream to a list.
719−--
720−-- /Warning!/ working on large lists accumulated as buffers in memory could be
721−-- very inefficient, consider using "Streamly.Data.Array.Storable.Foreign"
722−-- instead.
723−--
724−-- @since 0.7.0
725−
726−-- id . (x1 :) . (x2 :) . (x3 :) . ... . (xn :) $ []
727−{-# INLINABLE toList #-}
728−toList :: Monad m => Fold m a [a]
729−toList = mkAccum (\f x -> f . (x :)) id ($ [])
730−
731-- $toListRevF
718-- $toListRevF
732-- This is more efficient than 'Streamly.Internal.Data.Fold.toList'. toList is
719-- This is more efficient than 'Streamly.Internal.Data.Fold.toList'. toList is
733-- exactly the same as reversing the list after 'toListRevF'.
720-- exactly the same as reversing the list after 'toListRevF'.
src/Streamly/Internal/Data/Fold/Types.hs+20
@@ -185,6 +185,9 @@ module Streamly.Internal.Data.Fold.Types
185 , Fold2 (..)
185 , Fold2 (..)
186 , simplify
186 , simplify
187
187
188+ -- * Basic Folds
189+ , toList
190+
188 -- * Generators
191 -- * Generators
189 , yield
192 , yield
190 , yieldM
193 , yieldM
@@ -410,6 +413,23 @@ simplify :: Functor m => Fold2 m c a b -> c -> Fold m a b
410simplify (Fold2 step inject extract) c =
413simplify (Fold2 step inject extract) c =
411 Fold (\x a -> Partial <$> step x a) (Partial <$> inject c) extract
414 Fold (\x a -> Partial <$> step x a) (Partial <$> inject c) extract
412
415
416+------------------------------------------------------------------------------
417+-- Basic Folds
418+------------------------------------------------------------------------------
419+
420+-- | Folds the input stream to a list.
421+--
422+-- /Warning!/ working on large lists accumulated as buffers in memory could be
423+-- very inefficient, consider using "Streamly.Data.Array.Storable.Foreign"
424+-- instead.
425+--
426+-- @since 0.7.0
427+
428+-- id . (x1 :) . (x2 :) . (x3 :) . ... . (xn :) $ []
429+{-# INLINABLE toList #-}
430+toList :: Monad m => Fold m a [a]
431+toList = mkAccum (\f x -> f . (x :)) id ($ [])
432+
413------------------------------------------------------------------------------
433------------------------------------------------------------------------------
414-- Instances
434-- Instances
415------------------------------------------------------------------------------
435------------------------------------------------------------------------------
streamly.cabal+1−1
@@ -452,8 +452,8 @@ library
452 , Streamly.Internal.Data.SmallArray.Types
452 , Streamly.Internal.Data.SmallArray.Types
453
453
454 -- streamly-base-streams
454 -- streamly-base-streams
455− -- May depend on streamly-core-array
456 , Streamly.Internal.Data.Stream.StreamK
455 , Streamly.Internal.Data.Stream.StreamK
456+ -- StreamD depends on streamly-core-array
457 , Streamly.Internal.Data.Stream.StreamD.Generate
457 , Streamly.Internal.Data.Stream.StreamD.Generate
458 , Streamly.Internal.Data.Stream.StreamD.Eliminate
458 , Streamly.Internal.Data.Stream.StreamD.Eliminate
459 , Streamly.Internal.Data.Stream.StreamD.Nesting
459 , Streamly.Internal.Data.Stream.StreamD.Nesting