@@ -92,7 +92,7 @@ module Streamly.Internal.Data.Array.Generic.Mut.Type
93 -- ** To containers
93 -- ** To containers
94 , toStreamD
94 , toStreamD
95− -- , toStreamDRev
95+ , readRev
96 , toStreamK
96 , toStreamK
97 -- , toStreamKRev
97 -- , toStreamKRev
@@ -536,6 +536,7 @@ toStreamD :: MonadIO m => MutArray a -> D.Stream m a
536toStreamD arr@MutArray{..} =
536toStreamD arr@MutArray{..} =
537 D.mapM (`getIndexUnsafe` arr) $ D.enumerateFromToIntegral 0 (arrLen - 1)
537 D.mapM (`getIndexUnsafe` arr) $ D.enumerateFromToIntegral 0 (arrLen - 1)
539+-- Check equivalence with StreamK.fromStream . toStreamD and remove
539{-# INLINE toStreamK #-}
540{-# INLINE toStreamK #-}
540toStreamK :: MonadIO m => MutArray a -> K.StreamK m a
541toStreamK :: MonadIO m => MutArray a -> K.StreamK m a
541toStreamK arr@MutArray{..} = K.unfoldrM step 0
542toStreamK arr@MutArray{..} = K.unfoldrM step 0
@@ -548,6 +549,12 @@ toStreamK arr@MutArray{..} = K.unfoldrM step 0
548 x <- getIndexUnsafe i arr
549 x <- getIndexUnsafe i arr
549 return $ Just (x, i + 1)
550 return $ Just (x, i + 1)
552+{-# INLINE_NORMAL readRev #-}
553+readRev :: MonadIO m => MutArray a -> D.Stream m a
554+readRev arr@MutArray{..} =
555+ D.mapM (`getIndexUnsafe` arr)
556+ $ D.enumerateFromThenToIntegral (arrLen - 1) (arrLen - 2) 0
551-------------------------------------------------------------------------------
558-------------------------------------------------------------------------------
553-------------------------------------------------------------------------------
560-------------------------------------------------------------------------------