@@ -72,8 +72,8 @@ module Streamly.Internal.Data.MutArray.Type
7272 , pinnedFromList
7373 , fromListRevN
7474 , fromListRev
75− , fromStreamDN
76− , fromStreamD
75+ , fromStreamN
76+ , fromStream
7777 , fromPureStreamN
7878 , fromPureStream
7979 , fromByteStr#
@@ -236,6 +236,8 @@ module Streamly.Internal.Data.MutArray.Type
236236 , flattenArrays
237237 , flattenArraysRev
238238 , fromArrayStreamK
239+ , fromStreamDN
240+ , fromStreamD
239241 )
240242where
241243
@@ -2044,13 +2046,18 @@ fromStreamDNAs ps limit str = do
20442046
20452047-- | Use the 'writeN' fold instead.
20462048--
2047−-- >>> fromStreamDN n = Stream.fold (MutArray.writeN n)
2049+-- >>> fromStreamN n = Stream.fold (MutArray.writeN n)
20482050--
2049−{-# INLINE_NORMAL fromStreamDN #-}
2050−fromStreamDN :: forall m a. (MonadIO m, Unbox a)
2051+{-# INLINE_NORMAL fromStreamN #-}
2052+fromStreamN :: forall m a. (MonadIO m, Unbox a)
20512053 => Int -> D.Stream m a -> m (MutArray a)
20522054-- fromStreamDN n = D.fold (writeN n)
2053−fromStreamDN = fromStreamDNAs Unpinned
2055+fromStreamN = fromStreamDNAs Unpinned
2056+
2057+{-# DEPRECATED fromStreamDN "Please use fromStreamN instead." #-}
2058+fromStreamDN :: forall m a. (MonadIO m, Unbox a)
2059+ => Int -> D.Stream m a -> m (MutArray a)
2060+fromStreamDN = fromStreamN
20542061
20552062-- | Create a 'MutArray' from the first N elements of a list. The array is
20562063-- allocated to size N, if the list terminates before N elements then the
@@ -2177,6 +2184,20 @@ fromStreamDAs ::
21772184fromStreamDAs ps m =
21782185 arrayStreamKFromStreamDAs Unpinned m >>= fromChunkskAs ps
21792186
2187+-- | Create an 'Array' from a stream. This is useful when we want to create a
2188+-- single array from a stream of unknown size. 'writeN' is at least twice
2189+-- as efficient when the size is already known.
2190+--
2191+-- Note that if the input stream is too large memory allocation for the array
2192+-- may fail. When the stream size is not known, `chunksOf` followed by
2193+-- processing of indvidual arrays in the resulting stream should be preferred.
2194+--
2195+-- /Pre-release/
2196+{-# INLINE fromStream #-}
2197+fromStream :: (MonadIO m, Unbox a) => Stream m a -> m (MutArray a)
2198+fromStream = fromStreamDAs Unpinned
2199+
2200+-- fromStream (Stream m) = P.fold write m
21802201-- CAUTION: a very large number (millions) of arrays can degrade performance
21812202-- due to GC overhead because we need to buffer the arrays before we flatten
21822203-- all the arrays.
@@ -2191,8 +2212,9 @@ fromStreamDAs ps m =
21912212-- >>> fromStreamD = StreamD.fold MutArray.write
21922213--
21932214{-# INLINE fromStreamD #-}
2215+{-# DEPRECATED fromStreamD "Please use fromStream instead." #-}
21942216fromStreamD :: (MonadIO m, Unbox a) => D.Stream m a -> m (MutArray a)
2195−fromStreamD = fromStreamDAs Unpinned
2217+fromStreamD = fromStream
21962218
21972219-- | Create a 'MutArray' from a list. The list must be of finite size.
21982220--