@@ -74,6 +74,7 @@ module Streamly.Internal.Data.MutArray.Type
7474 , fromListRev
7575 , fromStreamDN
7676 , fromStreamD
77+ , fromPureStreamN
7778 , fromPureStream
7879
7980 -- ** Random writes
@@ -2028,6 +2029,13 @@ pinnedFromListN n xs = fromStreamDNAs Pinned n $ D.fromList xs
20282029fromListRevN :: (MonadIO m, Unbox a) => Int -> [a] -> m (MutArray a)
20292030fromListRevN n xs = D.fold (writeRevN n) $ D.fromList xs
20302031
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
2038+
20312039-- | Convert a pure stream in Identity monad to a mutable array.
20322040{-# INLINABLE fromPureStream #-}
20332041fromPureStream :: (MonadIO m, Unbox a) => Stream Identity a -> m (MutArray a)