Copyright | (c) The University of Glasgow 2001 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | [email protected] |
Stability | stable |
Portability | portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
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). Ix
uses row-major order.
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:
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))
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.
Ix Bool | Since: 2.1 |
Ix Char | Since: 2.1 |
Ix Int | Since: 2.1 |
Ix Int8 | Since: 2.1 |
Ix Int16 | Since: 2.1 |
Ix Int32 | Since: 2.1 |
Ix Int64 | Since: 2.1 |
Ix Integer | Since: 2.1 |
Ix Natural | Since: 4.8.0.0 |
Ix Ordering | Since: 2.1 |
Ix Word | Since: 4.6.0.0 |
Ix Word8 | Since: 2.1 |
Ix Word16 | Since: 2.1 |
Ix Word32 | Since: 2.1 |
Ix Word64 | Since: 2.1 |
Ix () | Since: 2.1 |
Ix GeneralCategory | |
Ix IOMode | |
Ix DecidedStrictness | |
Ix SourceStrictness | |
Ix SourceUnpackedness | |
Ix Associativity | |
Ix SeekMode | |
Ix Void | Since: 4.8.0.0 |
Ix a => Ix (Identity a) | |
(Ix a, Ix b) => Ix (a, b) | Since: 2.1 |
Ix (Proxy k s) | Since: 4.7.0.0 |
(Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3) | Since: 2.1 |
Ix a => Ix (Const k a b) | |
(Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) | Since: 2.1 |
(Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5) | Since: 2.1 |
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
.
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
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.2.1/docs/html/libraries/base-4.10.0.0/Data-Ix.html