X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FIx.hs;h=fda6d58c4ad7bb89e56ff30a98c638ce97fa7f25;hb=8afc9fecd586d3c4f7ef9c69fb1686a79e5f441d;hp=44e113a1eb2d1d97282892cd1eb5b6eb34cc47e5;hpb=d12c4f3de454ea031f2258627d388d3d994a3cfd;p=ghc-base.git diff --git a/Data/Ix.hs b/Data/Ix.hs index 44e113a..fda6d58 100644 --- a/Data/Ix.hs +++ b/Data/Ix.hs @@ -5,36 +5,23 @@ -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org --- Stability : provisional +-- Stability : stable -- Portability : portable -- --- Class of index types. --- --- The "Ix" class is used to map a continuous subrange of values in a type onto --- integers. It is used primarily for array indexing (see Section 6 --- ). The "Ix" --- class contains the methods range, index, and inRange. The 'index' operation --- maps a bounding pair, which defines the lower and upper bounds of the range, --- and a subscript, to an integer. The 'range' operation enumerates all --- subscripts; the 'inRange' operation tells whether a particular subscript --- lies in the range defined by a bounding pair. --- --- An implementation is entitled to assume the following laws about these --- operations: --- --- > range (l,u) !! index (l,u) i == i -- when i is in range --- --- > inRange (l,u) i == i `elem` range (l,u) +-- The 'Ix' class is used to map a contiguous subrange of values in +-- type onto integers. It is used primarily for array indexing +-- (see the array package). -- ----------------------------------------------------------------------------- module Data.Ix ( - Ix - ( range -- :: (Ix a) => (a,a) -> [a] - , index -- :: (Ix a) => (a,a) -> a -> Int - , inRange -- :: (Ix a) => (a,a) -> a -> Bool - , rangeSize -- :: (Ix a) => (a,a) -> Int - ) + -- * The 'Ix' class + Ix + ( range -- :: (Ix a) => (a,a) -> [a] + , index -- :: (Ix a) => (a,a) -> a -> Int + , inRange -- :: (Ix a) => (a,a) -> a -> Bool + , rangeSize -- :: (Ix a) => (a,a) -> Int + ) -- Ix instances: -- -- Ix Char @@ -48,7 +35,7 @@ module Data.Ix -- Implementation checked wrt. Haskell 98 lib report, 1/99. - -- * Deriving Instances of Ix + -- * Deriving Instances of 'Ix' -- | Derived instance declarations for the class 'Ix' are only possible -- for enumerations (i.e. datatypes having only nullary constructors) -- and single-constructor datatypes, including arbitrarily large tuples, @@ -59,13 +46,13 @@ module Data.Ix -- is the same numbering defined by the 'Enum' class. For example, given -- the datatype: -- - -- > data Colour = Red | Orange | Yellow | Green | Blue | Indigo | Violet + -- > data Colour = Red | Orange | Yellow | Green | Blue | Indigo | Violet -- -- we would have: -- - -- > range (Yellow,Blue) == [Yellow,Green,Blue] - -- > index (Yellow,Blue) Green == 1 - -- > inRange (Yellow,Blue) Red == False + -- > range (Yellow,Blue) == [Yellow,Green,Blue] + -- > index (Yellow,Blue) Green == 1 + -- > inRange (Yellow,Blue) Red == False -- -- * For single-constructor datatypes, the derived instance declarations -- are as shown for tuples in Figure 1 @@ -73,7 +60,7 @@ module Data.Ix ) where -import Prelude +-- import Prelude #ifdef __GLASGOW_HASKELL__ import GHC.Arr