@@ -26,6 +26,7 @@ module Streamly.Internal.Data.Array.Foreign.Mut.Type
2626 -- * From containers
2727 , fromList
2828 , fromListN
29+ , fromListIO
2930 , fromStreamDN
3031 , fromStreamD
3132
@@ -303,15 +304,12 @@ unsafeWithNewArray count f = do
303304-------------------------------------------------------------------------------
304305
305306{-# INLINE unsafeWriteIndex #-}
306−unsafeWriteIndex :: forall a. Storable a => Array a -> Int -> a -> IO (Array a)
307−unsafeWriteIndex arr@Array {..} i x =
307+unsafeWriteIndex :: forall a. Storable a => Array a -> Int -> a -> IO ()
308+unsafeWriteIndex Array {..} i x =
308309 unsafeWithForeignPtr aStart
309310 $ \begin -> do
310311 poke (begin `plusPtr` (i * sizeOf (undefined :: a))) x
311− return arr
312312
313−-- XXX grow the array when we are beyond bound.
314−--
315313-- Internal routine for when the array is being created. Appends one item at
316314-- the end of the array. Useful when sequentially writing a stream to the
317315-- array.
@@ -981,6 +979,11 @@ fromStreamD m = do
981979 len <- K.foldl' (+) 0 (K.map length buffered)
982980 fromStreamDN len $ D.unfoldMany read $ D.fromStreamK buffered
983981
982+-- XXX Replace fromList with this
983+{-# INLINABLE fromListIO #-}
984+fromListIO :: Storable a => [a] -> IO (Array a)
985+fromListIO xs = fromStreamD $ D.fromList xs
986+
984987-- | Create an 'Array' from a list. The list must be of finite size.
985988--
986989-- @since 0.7.0