| Copyright | (c) The University of Glasgow 2001 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | stable |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Data.Ix
Description
The Ix class
class Ord a => Ix a where Source #
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:
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 Bool Source # | Since: 2.1 |
| Ix Char Source # | Since: 2.1 |
| Ix Int Source # | Since: 2.1 |
| Ix Int8 Source # | Since: 2.1 |
| Ix Int16 Source # | Since: 2.1 |
| Ix Int32 Source # | Since: 2.1 |
| Ix Int64 Source # | Since: 2.1 |
| Ix Integer Source # | Since: 2.1 |
| Ix Natural Source # | Since: 4.8.0.0 |
| Ix Ordering Source # | Since: 2.1 |
| Ix Word Source # | Since: 4.6.0.0 |
| Ix Word8 Source # | Since: 2.1 |
| Ix Word16 Source # | Since: 2.1 |
| Ix Word32 Source # | Since: 2.1 |
| Ix Word64 Source # | Since: 2.1 |
| Ix () Source # | Since: 2.1 |
| Ix GeneralCategory Source # | |
| Ix IOMode Source # | |
| Ix DecidedStrictness Source # | |
| Ix SourceStrictness Source # | |
| Ix SourceUnpackedness Source # | |
| Ix Associativity Source # | |
| Ix SeekMode Source # | |
| Ix Void Source # | Since: 4.8.0.0 |
| Ix a => Ix (Identity a) Source # | |
| (Ix a, Ix b) => Ix (a, b) Source # | Since: 2.1 |
| Ix (Proxy k s) Source # | Since: 4.7.0.0 |
| (Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3) Source # | Since: 2.1 |
| Ix a => Ix (Const k a b) Source # | |
| (Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) Source # | Since: 2.1 |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5) Source # | Since: 2.1 |
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
Enumclass. 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 chapter 19, section 2 of the Haskell 2010 report: https://www.haskell.org/onlinereport/haskell2010/haskellch19.html.