d9083da86d0246ccf2e9f4f6732414bae4769644
[ghc-base.git] / Data / Array.hs
1 {-# OPTIONS -fno-implicit-prelude #-}
2 -----------------------------------------------------------------------------
3 -- |
4 -- Module      :  Data.Array 
5 -- Copyright   :  (c) The University of Glasgow 2001
6 -- License     :  BSD-style (see the file libraries/base/LICENSE)
7 -- 
8 -- Maintainer  :  libraries@haskell.org
9 -- Stability   :  provisional
10 -- Portability :  portable
11 --
12 -- Basic non-strict arrays.
13 --
14 -----------------------------------------------------------------------------
15
16 module  Data.Array 
17
18     ( 
19       module Data.Ix            -- export all of Ix 
20     , Array                     -- Array type is abstract
21
22     , array         -- :: (Ix a) => (a,a) -> [(a,b)] -> Array a b
23     , listArray     -- :: (Ix a) => (a,a) -> [b] -> Array a b
24     , (!)           -- :: (Ix a) => Array a b -> a -> b
25     , bounds        -- :: (Ix a) => Array a b -> (a,a)
26     , indices       -- :: (Ix a) => Array a b -> [a]
27     , elems         -- :: (Ix a) => Array a b -> [b]
28     , assocs        -- :: (Ix a) => Array a b -> [(a,b)]
29     , accumArray    -- :: (Ix a) => (b -> c -> b) -> b -> (a,a) -> [(a,c)] -> Array a b
30     , (//)          -- :: (Ix a) => Array a b -> [(a,b)] -> Array a b
31     , accum         -- :: (Ix a) => (b -> c -> b) -> Array a b -> [(a,c)] -> Array a b
32     , ixmap         -- :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c -> Array a b
33
34     -- Array instances:
35     --
36     --   Ix a => Functor (Array a)
37     --   (Ix a, Eq b)  => Eq   (Array a b)
38     --   (Ix a, Ord b) => Ord  (Array a b)
39     --   (Ix a, Show a, Show b) => Show (Array a b)
40     --   (Ix a, Read a, Read b) => Read (Array a b)
41     -- 
42
43     -- Implementation checked wrt. Haskell 98 lib report, 1/99.
44
45     ) where
46
47 #ifndef __NHC__
48 import Data.Dynamic
49 #endif
50
51 import Data.Ix
52
53 #ifdef __GLASGOW_HASKELL__
54 import GHC.Arr          -- Most of the hard work is done here
55 import GHC.Err          ( undefined )
56 #endif
57
58 #ifdef __HUGS__
59 import Hugs.Array
60 #endif
61
62 #ifdef __NHC__
63 import Array            -- Haskell'98 arrays
64 #endif
65
66 #ifndef __NHC__
67 #include "Typeable.h"
68 INSTANCE_TYPEABLE2(Array,arrayTc,"Array")
69 #endif