on master help sign in
Move fromStream to higher level Unfold module

To free the lower level module from dependency on IsStream type

commitccb80ef8c45b853cdbb085520100e832eb8521d2 authorHarendra Kumar <harendra@composewell.com> dateSun 14 Nov 2021, 23:16 (5 years ago) parenta4d9e52
2 files changed+17−5
src/Streamly/Data/Unfold.hs+14−1 src/Streamly/Internal/Data/Unfold.hs+3−4
src/Streamly/Data/Unfold.hs+14−1
@@ -149,4 +149,17 @@ import Prelude hiding
149149 ( concat, map, mapM, takeWhile, take, filter, const, drop, dropWhile
150150 , zipWith
151151 )
152−import Streamly.Internal.Data.Unfold
152+import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
153+import Streamly.Internal.Data.Unfold hiding (fromStream)
154+
155+import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
156+import qualified Streamly.Internal.Data.Unfold as Unfold
157+
158+-- | Convert a stream into an 'Unfold'. Note that a stream converted to an
159+-- 'Unfold' may not be as efficient as an 'Unfold' in some situations.
160+--
161+-- /Since: 0.8.0/
162+--
163+{-# INLINE_NORMAL fromStream #-}
164+fromStream :: (IsStream t, Monad m) => Unfold m (t m a) a
165+fromStream = lmap IsStream.adapt Unfold.fromStream
src/Streamly/Internal/Data/Unfold.hs+3−4
@@ -256,14 +256,13 @@ import Streamly.Internal.Control.Concurrent (MonadAsync)
256256import Streamly.Internal.Data.Fold.Type (Fold(..))
257257import Streamly.Internal.Data.IOFinalizer
258258 (newIOFinalizer, runIOFinalizer, clearingIOFinalizer)
259−import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
259+import Streamly.Internal.Data.Stream.Serial (SerialT(..))
260260import Streamly.Internal.Data.Stream.StreamD.Type (Stream(..), Step(..))
261261import Streamly.Internal.Data.SVar.Type (defState)
262262
263263import qualified Control.Monad.Catch as MC
264264import qualified Data.Tuple as Tuple
265265import qualified Streamly.Internal.Data.Fold.Type as FL
266−import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
267266import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
268267import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
269268
@@ -502,8 +501,8 @@ fromStreamK = Unfold step pure
502501-- /Since: 0.8.0/
503502--
504503{-# INLINE_NORMAL fromStream #-}
505−fromStream :: (IsStream t, Monad m) => Unfold m (t m a) a
506−fromStream = lmap IsStream.toStream fromStreamK
504+fromStream :: Monad m => Unfold m (SerialT m a) a
505+fromStream = lmap getSerialT fromStreamK
507506
508507-------------------------------------------------------------------------------
509508-- Unfolds