@@ -74,6 +74,7 @@ module Streamly.Internal.Data.MutArray.Type
74 , fromListRev
74 , fromListRev
75 , fromStreamDN
75 , fromStreamDN
76 , fromStreamD
76 , fromStreamD
77 , fromPureStream
78 , fromPureStream
79 -- ** Random writes
80 -- ** Random writes
@@ -2028,6 +2029,13 @@ pinnedFromListN n xs = fromStreamDNAs Pinned n $ D.fromList xs
2028fromListRevN :: (MonadIO m, Unbox a) => Int -> [a] -> m (MutArray a)
2029fromListRevN :: (MonadIO m, Unbox a) => Int -> [a] -> m (MutArray a)
2029fromListRevN n xs = D.fold (writeRevN n) $ D.fromList xs
2030fromListRevN n xs = D.fold (writeRevN n) $ D.fromList xs
2032+-- | Convert a pure stream in Identity monad to a mutable array.
2033+{-# INLINABLE fromPureStreamN #-}
2034+fromPureStreamN :: (MonadIO m, Unbox a) =>
2035+ Int -> Stream Identity a -> m (MutArray a)
2036+fromPureStreamN n xs =
2037+ liftIO $ D.fold (writeN n) $ D.morphInner (return . runIdentity) xs
2031-- | Convert a pure stream in Identity monad to a mutable array.
2039-- | Convert a pure stream in Identity monad to a mutable array.
2032{-# INLINABLE fromPureStream #-}
2040{-# INLINABLE fromPureStream #-}
2033fromPureStream :: (MonadIO m, Unbox a) => Stream Identity a -> m (MutArray a)
2041fromPureStream :: (MonadIO m, Unbox a) => Stream Identity a -> m (MutArray a)