| haskell98-1.0.1.1: Compatibility with Haskell 98 | Contents | Index

Ix

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

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

Documentation
class Ord a => Ix a where

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.

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)

rangeSize :: Ix a => (a, a) -> Int
The size of the subrange defined by a bounding pair.
Produced by Haddock version 2.6.1