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))
Char, (,), (), (,,,), (,,), Bool, (,,,,), Integer, Int, Ordering
Returns HaskellBool.True the given subscript lies in the range defined the bounding pair.
The position of a subscript in the subrange.
Must specify one of index, unsafeIndex
Ix.index is typically over-ridden in instances, with essentially the same code, but using indexError instead of error Reason: we have Show at the instances
The list of values in the subrange defined by a bounding pair.
The size of the subrange defined by a bounding pair.
Like Ix.index, but without checking that the value is in range.
like Ix.rangeSize, but without checking that the upper bound is in range.
nowarn: diverge
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.index
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.index
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.index
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.index
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize
inherited from Ix.rangeSize
inherited from Ix.unsafeRangeSize