Data.Ix

| 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