Skip to content
Snippets Groups Projects
Commit c9022bbe authored by Joachim Breitner's avatar Joachim Breitner
Browse files

Also add newGenArray

parent deca9434
No related branches found
No related tags found
1 merge request!13Add genArray
...@@ -905,6 +905,15 @@ newListArray (l,u) es = do ...@@ -905,6 +905,15 @@ newListArray (l,u) es = do
fillFromList 0 es fillFromList 0 es
return marr return marr
-- | Constructs a mutable array using a generator function.
-- It invokes the generator function in ascending order of the indices.
newGenArray :: (MArray a e m, Ix i) => (i,i) -> (i -> m e) -> m (a i e)
newGenArray (l,u) f = do
marr <- newArray_ (l,u)
let n = safeRangeSize (l,u)
sequence_ [ f i >>= unsafeWrite marr (safeIndex (l,u) n i) | i <- range (l,u)]
return marr
{-# INLINE readArray #-} {-# INLINE readArray #-}
-- | Read an element from a mutable array -- | Read an element from a mutable array
readArray :: (MArray a e m, Ix i) => a i e -> i -> m e readArray :: (MArray a e m, Ix i) => a i e -> i -> m e
......
...@@ -27,6 +27,7 @@ module Data.Array.MArray ( ...@@ -27,6 +27,7 @@ module Data.Array.MArray (
newArray, -- :: (MArray a e m, Ix i) => (i,i) -> e -> m (a i e) newArray, -- :: (MArray a e m, Ix i) => (i,i) -> e -> m (a i e)
newArray_, -- :: (MArray a e m, Ix i) => (i,i) -> m (a i e) newArray_, -- :: (MArray a e m, Ix i) => (i,i) -> m (a i e)
newListArray, -- :: (MArray a e m, Ix i) => (i,i) -> [e] -> m (a i e) newListArray, -- :: (MArray a e m, Ix i) => (i,i) -> [e] -> m (a i e)
newGenArray, -- :: (MArray a e m, Ix i) => (i,i) -> (i -> m e) -> m (a i e)
-- * Reading and writing mutable arrays -- * Reading and writing mutable arrays
readArray, -- :: (MArray a e m, Ix i) => a i e -> i -> m e readArray, -- :: (MArray a e m, Ix i) => a i e -> i -> m e
......
...@@ -29,6 +29,7 @@ module Data.Array.MArray.Safe ( ...@@ -29,6 +29,7 @@ module Data.Array.MArray.Safe (
newArray, -- :: (MArray a e m, Ix i) => (i,i) -> e -> m (a i e) newArray, -- :: (MArray a e m, Ix i) => (i,i) -> e -> m (a i e)
newArray_, -- :: (MArray a e m, Ix i) => (i,i) -> m (a i e) newArray_, -- :: (MArray a e m, Ix i) => (i,i) -> m (a i e)
newListArray, -- :: (MArray a e m, Ix i) => (i,i) -> [e] -> m (a i e) newListArray, -- :: (MArray a e m, Ix i) => (i,i) -> [e] -> m (a i e)
newGenArray, -- :: (MArray a e m, Ix i) => (i,i) -> (i -> m e) -> m (a i e)
-- * Reading and writing mutable arrays -- * Reading and writing mutable arrays
readArray, -- :: (MArray a e m, Ix i) => a i e -> i -> m e readArray, -- :: (MArray a e m, Ix i) => a i e -> i -> m e
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## 0.5.5.0 *UNRELEASED* ## 0.5.5.0 *UNRELEASED*
* add the `genArray` function * add the `genArray` and `newGenArray` function
## 0.5.4.0 *July 2019* ## 0.5.4.0 *July 2019*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment