[project @ 2004-12-09 17:25:15 by simonmar]
[ghc-base.git] / Data / Array / MArray.hs
index 4178e0c..62d2e73 100644 (file)
@@ -1,4 +1,3 @@
-{-# OPTIONS -monly-3-regs #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Array.MArray
@@ -9,30 +8,42 @@
 -- Stability   :  experimental
 -- Portability :  non-portable
 --
--- Class of mutable arrays, and operations on them.
+-- An overloaded interface to mutable arrays.  For array types which can be
+-- used with this interface, see "Data.Array.IO", "Data.Array.ST", 
+-- and "Data.Array.Storable".
 --
 -----------------------------------------------------------------------------
 
 module Data.Array.MArray ( 
-    module Data.Ix,
-
-    -- Class of mutable array types
+    -- * Class of mutable array types
     MArray,       -- :: (* -> * -> *) -> * -> (* -> *) -> class
-    -- Class of array types with immutable bounds
+
+    -- * Class of array types with bounds
     HasBounds,    -- :: (* -> * -> *) -> class
 
+    -- * The @Ix@ class and operations
+    module Data.Ix,
+
+    -- * Constructing mutable arrays
     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)
     newListArray, -- :: (MArray a e m, Ix i) => (i,i) -> [e] -> m (a i e)
+
+    -- * Reading and writing mutable arrays
     readArray,    -- :: (MArray a e m, Ix i) => a i e -> i -> m e
     writeArray,   -- :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()
+
+    -- * Derived arrays
+    mapArray,     -- :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e)
+    mapIndices,   -- :: (MArray a e m, Ix i, Ix j) => (i,i) -> (i -> j) -> a j e -> m (a i e)
+
+    -- * Deconstructing mutable arrays
     bounds,       -- :: (HasBounds a, Ix i) => a i e -> (i,i)
     indices,      -- :: (HasBounds a, Ix i) => a i e -> [i]
     getElems,     -- :: (MArray a e m, Ix i) => a i e -> m [e]
     getAssocs,    -- :: (MArray a e m, Ix i) => a i e -> m [(i, e)]
-    mapArray,     -- :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e)
-    mapIndices,   -- :: (MArray a e m, Ix i, Ix j) => (i,i) -> (i -> j) -> a j e -> m (a i e)
 
+    -- * Conversions between mutable and immutable arrays
     freeze,       -- :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)
     unsafeFreeze, -- :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)
     thaw,         -- :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)
@@ -42,4 +53,7 @@ module Data.Array.MArray (
 import Prelude
 
 import Data.Ix
+#ifdef __HADDOCK__
+import Data.Array.IArray
+#endif
 import Data.Array.Base