
Data.Ix  Portability  portable  Stability  stable  Maintainer  libraries@haskell.org 





Description 
The Ix class is used to map a contiguous subrange of values in
type onto integers. It is used primarily for array indexing
(see the array package).


Synopsis 

class Ord a => Ix a where  



The Ix class


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]   index :: (a, a) > a > Int   inRange :: (a, a) > a > Bool   rangeSize :: (a, a) > Int 
  Instances  Ix Bool  Ix Char  Ix Int  Ix Int8  Ix Int16  Ix Int32  Ix Int64  Ix Integer  Ix Ordering  Ix Word  Ix Word8  Ix Word16  Ix Word32  Ix Word64  Ix ()  Ix IOMode  Ix GeneralCategory  Ix SeekMode  (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) 



Deriving Instances of Ix


Derived instance declarations for the class Ix are only possible
for enumerations (i.e. datatypes having only nullary constructors)
and singleconstructor datatypes, including arbitrarily large tuples,
whose constituent types are instances of Ix.
 For an enumeration, the nullary constructors are assumed to be
numbered lefttoright with the indices being 0 to n1 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 2.3.0 