Remove Control.Parallel*, now in package parallel
[haskell-directory.git] / Data / Array / MArray.hs
index 4178e0c..95fae97 100644 (file)
@@ -1,4 +1,3 @@
-{-# OPTIONS -monly-3-regs #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Array.MArray
@@ -7,32 +6,40 @@
 -- 
 -- Maintainer  :  libraries@haskell.org
 -- Stability   :  experimental
--- Portability :  non-portable
+-- Portability :  non-portable (uses Data.Array.Base)
 --
--- 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
-    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 ()
-    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)]
+
+    -- * 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
+    getBounds,    -- :: (MArray a e m, Ix i) => a i e -> m (i,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)]
+
+    -- * 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 +49,7 @@ module Data.Array.MArray (
 import Prelude
 
 import Data.Ix
+#ifdef __HADDOCK__
+import Data.Array.IArray
+#endif
 import Data.Array.Base