| Haskell Hierarchical Libraries (base package) | Contents | Index

Data.Ix

Portability | portable
Stability | stable
Maintainer | libraries@haskell.org

Contents

Deriving Instances of Ix

Description

Class of index types.

The `Ix` class is used to map a continuous subrange of values in a type onto integers. It is used primarily for array indexing (see Section 6 http://www.haskell.org/onlinelibrary/array.html#arrays). The `Ix` class contains the methods range, index, and inRange. The `index` operation maps a bounding pair, which defines the lower and upper bounds of the range, and a subscript, to an integer. The `range` operation enumerates all subscripts; the `inRange` operation tells whether a particular subscript lies in the range defined by a bounding pair.

An implementation is entitled to assume the following laws about these operations:

            range (l,u) !! index (l,u) i == i   -- when i is in range

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

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

Documentation
class Ord a => Ix a where

Methods

range :: (a, a) -> [a]
index :: (a, a) -> a -> Int
inRange :: (a, a) -> a -> Bool
rangeSize :: (a, a) -> Int

Instances

Ix Char
Ix Int
Ix Integer
Ix Bool
Ix Ordering
Ix ()
(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)
Ix SeekMode
Ix IOMode
Ix Int8
Ix Int16
Ix Int32
Ix Int64
Ix Word
Ix Word8
Ix Word16
Ix Word32
Ix Word64
Ix Month
Ix Day

Deriving Instances of Ix

Derived instance declarations for the class `Ix` are only possible for enumerations (i.e. datatypes having only nullary constructors) and single-constructor datatypes, including arbitrarily large tuples, whose constituent types are instances of `Ix`.

- For an enumeration, the nullary constructors are assumed to be numbered left-to-right with the indices being 0 to n-1 inclusive. This is the same numbering defined by the `Enum` class. For example, given the datatype:

    	data Colour = Red | Orange | Yellow | Green | Blue | Indigo | Violet

we would have:

    	range   (Yellow,Blue)        ==  [Yellow,Green,Blue]
    	index   (Yellow,Blue) Green  ==  1
    	inRange (Yellow,Blue) Red    ==  False

- For single-constructor datatypes, the derived instance declarations are as shown for tuples in Figure 1 http://www.haskell.org/onlinelibrary/ix.html#prelude-index.

Produced by Haddock version 0.6