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   The list of values in the subrange defined by a bounding pair.
   The position of a subscript in the subrange.
   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 Integer  Ix Ordering  Ix ()  Ix GeneralCategory  Ix SeekMode  Ix IOMode  Ix Month  Ix Day  (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) 

