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:

inRange
(l,u) i == elem
i (range
(l,u))

range
(l,u) !!
index
(l,u) i == i
, when inRange
(l,u) i

map
(index
(l,u)) (range
(l,u))) == [0..rangeSize
(l,u)1]

rangeSize
(l,u) == length
(range
(l,u))
Minimal complete instance: range
, index
and inRange
.
Methods
range :: (a, a) > [a]
The list of values in the subrange defined by a bounding pair.
index :: (a, a) > a > Int
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.
rangeSize :: (a, a) > Int
The size of the subrange defined by a bounding pair.