base-4.6.0.0: Basic libraries

Portabilityportable
Stabilitystable
Maintainerlibraries@haskell.org
Safe HaskellTrustworthy

Data.Ix

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

The Ix class

class Ord a => Ix a whereSource

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:

Minimal complete instance: range , index and inRange .

Methods

range :: (a, a) -> [a]Source

The list of values in the subrange defined by a bounding pair.

index :: (a, a) -> a -> Int Source

The position of a subscript in the subrange.

inRange :: (a, a) -> a -> Bool Source

Returns True the given subscript lies in the range defined the bounding pair.

rangeSize :: (a, a) -> Int Source

The size of the subrange defined by a bounding pair.

Instances

Ix ()
(Ord (a, b), Ix a, Ix b) => Ix (a, b)
(Ord (a1, a2, a3), Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3)
(Ord (a1, a2, a3, a4), Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4)
(Ord (a1, a2, a3, a4, a5), 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 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

AltStyle によって変換されたページ (->オリジナル) /