@@ -26,6 +26,7 @@ module Streamly.Internal.Data.Array.Foreign.Mut.Type
26 -- * From containers
26 -- * From containers
27 , fromList
27 , fromList
28 , fromListN
28 , fromListN
29 , fromStreamDN
30 , fromStreamDN
30 , fromStreamD
31 , fromStreamD
@@ -303,15 +304,12 @@ unsafeWithNewArray count f = do
303-------------------------------------------------------------------------------
304-------------------------------------------------------------------------------
305{-# INLINE unsafeWriteIndex #-}
306{-# INLINE unsafeWriteIndex #-}
306−unsafeWriteIndex :: forall a. Storable a => Array a -> Int -> a -> IO (Array a)
307+unsafeWriteIndex :: forall a. Storable a => Array a -> Int -> a -> IO ()
307−unsafeWriteIndex arr@Array {..} i x =
308+unsafeWriteIndex Array {..} i x =
308 unsafeWithForeignPtr aStart
309 unsafeWithForeignPtr aStart
309 $ \begin -> do
310 $ \begin -> do
310 poke (begin `plusPtr` (i * sizeOf (undefined :: a))) x
311 poke (begin `plusPtr` (i * sizeOf (undefined :: a))) x
313−-- XXX grow the array when we are beyond bound.
315-- Internal routine for when the array is being created. Appends one item at
313-- Internal routine for when the array is being created. Appends one item at
316-- the end of the array. Useful when sequentially writing a stream to the
314-- the end of the array. Useful when sequentially writing a stream to the
@@ -981,6 +979,11 @@ fromStreamD m = do
981 len <- K.foldl' (+) 0 (K.map length buffered)
979 len <- K.foldl' (+) 0 (K.map length buffered)
982 fromStreamDN len $ D.unfoldMany read $ D.fromStreamK buffered
980 fromStreamDN len $ D.unfoldMany read $ D.fromStreamK buffered
982+-- XXX Replace fromList with this
983+{-# INLINABLE fromListIO #-}
984+fromListIO :: Storable a => [a] -> IO (Array a)
985+fromListIO xs = fromStreamD $ D.fromList xs
984-- | Create an 'Array' from a list. The list must be of finite size.
987-- | Create an 'Array' from a list. The list must be of finite size.
986-- @since 0.7.0
989-- @since 0.7.0