Ix

Synopsis

# Documentation

class Ord a => Ix a where Source

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`.

Minimal complete definition

Methods

range :: (a, a) -> [a] Source

The list of values in the subrange defined by a bounding pair.

index :: (a, a) -> a -> Int Source

The position of a subscript in the subrange.

inRange :: (a, a) -> a -> Bool Source

Returns `True` the given subscript lies in the range defined the bounding pair.

rangeSize :: (a, a) -> Int Source

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 () Ix IOMode Ix SeekMode Ix GeneralCategory 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)

rangeSize :: Ix a => (a, a) -> Int Source

The size of the subrange defined by a bounding pair.