| Portability | portable | 
|---|---|
| Stability | stable | 
| Maintainer | libraries@haskell.org | 
| Safe Haskell | Trustworthy | 
Data.Ix
Description
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).
The Ix class
The Ix class is used to map a contiguous subrange of values in
 a type onto integers.  It is used primarily for array indexing
 (see the array package).
The first argument (l,u) of each of these operations is a pair
 specifying the lower and upper bounds of a contiguous subrange of values.
An implementation is entitled to assume the following laws about these operations:
Methods
range :: (a, a) -> [a]
The list of values in the subrange defined by a bounding pair.
The position of a subscript in the subrange.
inRange :: (a, a) -> a -> Bool
Returns True the given subscript lies in the range defined
 the bounding pair.
The size of the subrange defined by a bounding pair.
Instances
| Ix Bool | |
| Ix Char | |
| Ix Int | |
| Ix Int8 | |
| Ix Int16 | |
| Ix Int32 | |
| Ix Int64 | |
| Ix Integer | |
| Ix Ordering | |
| Ix Word | |
| Ix Word8 | |
| Ix Word16 | |
| Ix Word32 | |
| Ix Word64 | |
| Ix () | |
| Ix IOMode | |
| Ix SeekMode | |
| Ix GeneralCategory | |
| (Ix a, Ix b) => Ix (a, b) | |
| (Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3) | |
| (Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5) | 
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,
 whose constituent types are instances of Ix. 
-  For an enumeration, the nullary constructors are assumed to be
 numbered left-to-right with the indices being 0 to n-1 inclusive. This
 is the same numbering defined by the Enumclass. For example, given the datatype:
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
- For single-constructor datatypes, the derived instance declarations are as shown for tuples in Figure 1 http://www.haskell.org/onlinelibrary/ix.html#prelude-index.