|
Data.Ix | Portability | portable | Stability | stable | Maintainer | libraries@haskell.org |
|
|
|
|
|
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 | |
|
|
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
|
|
Produced by Haddock version 0.6 |