on master help sign in
toStream/toStreamRev should be able to fold to any monad

Fix review comment Fix benchmark Fix warnings

commit0b889318ed0640759c1883a9bdbb4101bb6e1324 authorRanjeet Kumar Ranjan <ranjeetr@composewell.com> dateThu 24 Jun 2021, 23:02 (5 years ago) parent85afed5
2 files changed+6−5
benchmark/Streamly/Benchmark/Prelude/Serial/Elimination.hs+4−2 src/Streamly/Internal/Data/Stream/IsStream/Eliminate.hs+2−3
benchmark/Streamly/Benchmark/Prelude/Serial/Elimination.hs+4−2
@@ -539,7 +539,8 @@ o_n_heap_elimination_toList value =
539539 [ bgroup "toList"
540540 -- Converting the stream to a list or pure stream in a strict monad
541541 [ benchIOSink value "toListRev" Internal.toListRev
542− , benchIOSink value "toStreamRev" Internal.toStreamRev
542+ , benchIOSink value "toStreamRev"
543+ (Internal.toStreamRev :: (SerialT IO Int -> IO (SerialT Identity Int)))
543544 ]
544545 ]
545546
@@ -548,7 +549,8 @@ o_n_space_elimination_toList value =
548549 [ bgroup "toList"
549550 -- Converting the stream to a list or pure stream in a strict monad
550551 [ benchIOSink value "toList" S.toList
551− , benchIOSink value "toStream" Internal.toStream
552+ , benchIOSink value "toStream"
553+ (Internal.toStream :: (SerialT IO Int -> IO (SerialT Identity Int)))
552554 ]
553555 ]
554556
src/Streamly/Internal/Data/Stream/IsStream/Eliminate.hs+2−3
@@ -151,7 +151,6 @@ where
151151
152152import Control.Monad.Catch (MonadThrow)
153153import Control.Monad.IO.Class (MonadIO(..))
154−import Data.Functor.Identity (Identity (..))
155154import Foreign.Storable (Storable)
156155import Streamly.Internal.Data.Parser (Parser (..))
157156import Streamly.Internal.Data.SVar (MonadAsync, defState)
@@ -800,7 +799,7 @@ toHandle h = go
800799-- /Pre-release/
801800--
802801{-# INLINE toStream #-}
803−toStream :: Monad m => SerialT m a -> m (SerialT Identity a)
802+toStream :: Monad m => SerialT m a -> m (SerialT n a)
804803toStream = foldr K.cons K.nil
805804
806805-- | Convert a stream to a pure stream in reverse order.
@@ -812,7 +811,7 @@ toStream = foldr K.cons K.nil
812811-- /Pre-release/
813812--
814813{-# INLINE toStreamRev #-}
815−toStreamRev :: Monad m => SerialT m a -> m (SerialT Identity a)
814+toStreamRev :: Monad m => SerialT m a -> m (SerialT n a)
816815toStreamRev = foldl' (flip K.cons) K.nil
817816
818817------------------------------------------------------------------------------