Data.Ix
 Portability portable Stability stable Maintainer libraries@haskell.org
 Contents Deriving Instances of Ix
Description

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 http://www.haskell.org/onlinelibrary/array.html#arrays). 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)
```
Synopsis
class Ord a => Ix a where
 range :: (a, a) -> [a] index :: (a, a) -> a -> Int inRange :: (a, a) -> a -> Bool rangeSize :: (a, a) -> Int
Documentation
class Ord a => Ix a where
Methods
 range :: (a, a) -> [a] index :: (a, a) -> a -> Int inRange :: (a, a) -> a -> Bool rangeSize :: (a, a) -> Int
Instances
 Ix Char Ix Int Ix Integer Ix Bool Ix Ordering Ix () (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) Ix SeekMode Ix IOMode Ix Int8 Ix Int16 Ix Int32 Ix Int64 Ix Word Ix Word8 Ix Word16 Ix Word32 Ix Word64 Ix Month Ix Day
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 Enum class. 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
```
Produced by Haddock version 0.6