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
Contents
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
Methods
range :: (Integer, Integer) -> [Integer] Source #
index :: (Integer, Integer) -> Integer -> Int Source #
unsafeIndex :: (Integer, Integer) -> Integer -> Int
inRange :: (Integer, Integer) -> Integer -> Bool Source #
rangeSize :: (Integer, Integer) -> Int Source #
unsafeRangeSize :: (Integer, Integer) -> Int
Methods
range :: (Natural, Natural) -> [Natural] Source #
index :: (Natural, Natural) -> Natural -> Int Source #
unsafeIndex :: (Natural, Natural) -> Natural -> Int
inRange :: (Natural, Natural) -> Natural -> Bool Source #
rangeSize :: (Natural, Natural) -> Int Source #
unsafeRangeSize :: (Natural, Natural) -> Int
Methods
range :: (Ordering, Ordering) -> [Ordering] Source #
index :: (Ordering, Ordering) -> Ordering -> Int Source #
unsafeIndex :: (Ordering, Ordering) -> Ordering -> Int
inRange :: (Ordering, Ordering) -> Ordering -> Bool Source #
rangeSize :: (Ordering, Ordering) -> Int Source #
unsafeRangeSize :: (Ordering, Ordering) -> Int
Methods
range :: (GeneralCategory, GeneralCategory) -> [GeneralCategory] Source #
index :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Int Source #
unsafeIndex :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Int
inRange :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Bool Source #
rangeSize :: (GeneralCategory, GeneralCategory) -> Int Source #
unsafeRangeSize :: (GeneralCategory, GeneralCategory) -> Int
Methods
range :: (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness] Source #
index :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int Source #
unsafeIndex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int
inRange :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool Source #
rangeSize :: (DecidedStrictness, DecidedStrictness) -> Int Source #
unsafeRangeSize :: (DecidedStrictness, DecidedStrictness) -> Int
Methods
range :: (SourceStrictness, SourceStrictness) -> [SourceStrictness] Source #
index :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Source #
unsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int
inRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool Source #
rangeSize :: (SourceStrictness, SourceStrictness) -> Int Source #
unsafeRangeSize :: (SourceStrictness, SourceStrictness) -> Int
Methods
range :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] Source #
index :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Source #
unsafeIndex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int
inRange :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool Source #
rangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Source #
unsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int
Methods
range :: (Associativity, Associativity) -> [Associativity] Source #
index :: (Associativity, Associativity) -> Associativity -> Int Source #
unsafeIndex :: (Associativity, Associativity) -> Associativity -> Int
inRange :: (Associativity, Associativity) -> Associativity -> Bool Source #
rangeSize :: (Associativity, Associativity) -> Int Source #
unsafeRangeSize :: (Associativity, Associativity) -> Int
Methods
range :: (SeekMode, SeekMode) -> [SeekMode] Source #
index :: (SeekMode, SeekMode) -> SeekMode -> Int Source #
unsafeIndex :: (SeekMode, SeekMode) -> SeekMode -> Int
inRange :: (SeekMode, SeekMode) -> SeekMode -> Bool Source #
rangeSize :: (SeekMode, SeekMode) -> Int Source #
unsafeRangeSize :: (SeekMode, SeekMode) -> Int
Methods
range :: (Identity a, Identity a) -> [Identity a] Source #
index :: (Identity a, Identity a) -> Identity a -> Int Source #
unsafeIndex :: (Identity a, Identity a) -> Identity a -> Int
inRange :: (Identity a, Identity a) -> Identity a -> Bool Source #
rangeSize :: (Identity a, Identity a) -> Int Source #
unsafeRangeSize :: (Identity a, Identity a) -> Int
Methods
range :: (Proxy k s, Proxy k s) -> [Proxy k s] Source #
index :: (Proxy k s, Proxy k s) -> Proxy k s -> Int Source #
unsafeIndex :: (Proxy k s, Proxy k s) -> Proxy k s -> Int
inRange :: (Proxy k s, Proxy k s) -> Proxy k s -> Bool Source #
rangeSize :: (Proxy k s, Proxy k s) -> Int Source #
unsafeRangeSize :: (Proxy k s, Proxy k s) -> Int
Methods
range :: ((a1, a2, a3), (a1, a2, a3)) -> [(a1, a2, a3)] Source #
index :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Int Source #
unsafeIndex :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Int
inRange :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Bool Source #
rangeSize :: ((a1, a2, a3), (a1, a2, a3)) -> Int Source #
unsafeRangeSize :: ((a1, a2, a3), (a1, a2, a3)) -> Int
Methods
range :: (Const k a b, Const k a b) -> [Const k a b] Source #
index :: (Const k a b, Const k a b) -> Const k a b -> Int Source #
unsafeIndex :: (Const k a b, Const k a b) -> Const k a b -> Int
inRange :: (Const k a b, Const k a b) -> Const k a b -> Bool Source #
rangeSize :: (Const k a b, Const k a b) -> Int Source #
unsafeRangeSize :: (Const k a b, Const k a b) -> Int
Methods
range :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> [(a1, a2, a3, a4)] Source #
index :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Int Source #
unsafeIndex :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Int
inRange :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Bool Source #
rangeSize :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> Int Source #
unsafeRangeSize :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> Int
Methods
range :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> [(a1, a2, a3, a4, a5)] Source #
index :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Int Source #
unsafeIndex :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Int
inRange :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Bool Source #
rangeSize :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> Int Source #
unsafeRangeSize :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> Int
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
- 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.