base-4.10.1.0: Basic libraries

Copyright(c) The University of Glasgow 2001
LicenseBSD-style (see the file libraries/base/LICENSE)
Maintainerlibraries@haskell.org
Stabilitystable
Portabilityportable
Safe HaskellTrustworthy
LanguageHaskell2010

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). Ix uses row-major order.

Synopsis

  • class Ord a => Ix a where

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:

Minimal complete definition

range, (index | unsafeIndex), 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 Bool Source #

Since: 2.1

Methods

range :: (Bool, Bool) -> [Bool] Source #

index :: (Bool, Bool) -> Bool -> Int Source #

unsafeIndex :: (Bool, Bool) -> Bool -> Int

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

rangeSize :: (Bool, Bool) -> Int Source #

unsafeRangeSize :: (Bool, Bool) -> Int

Ix Char Source #

Since: 2.1

Methods

range :: (Char, Char) -> [Char] Source #

index :: (Char, Char) -> Char -> Int Source #

unsafeIndex :: (Char, Char) -> Char -> Int

inRange :: (Char, Char) -> Char -> Bool Source #

rangeSize :: (Char, Char) -> Int Source #

unsafeRangeSize :: (Char, Char) -> Int

Ix Int Source #

Since: 2.1

Methods

range :: (Int, Int) -> [Int] Source #

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

unsafeIndex :: (Int, Int) -> Int -> Int

inRange :: (Int, Int) -> Int -> Bool Source #

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

unsafeRangeSize :: (Int, Int) -> Int

Ix Int8 Source #

Since: 2.1

Methods

range :: (Int8, Int8) -> [Int8] Source #

index :: (Int8, Int8) -> Int8 -> Int Source #

unsafeIndex :: (Int8, Int8) -> Int8 -> Int

inRange :: (Int8, Int8) -> Int8 -> Bool Source #

rangeSize :: (Int8, Int8) -> Int Source #

unsafeRangeSize :: (Int8, Int8) -> Int

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

Methods

range :: (Word, Word) -> [Word] Source #

index :: (Word, Word) -> Word -> Int Source #

unsafeIndex :: (Word, Word) -> Word -> Int

inRange :: (Word, Word) -> Word -> Bool Source #

rangeSize :: (Word, Word) -> Int Source #

unsafeRangeSize :: (Word, Word) -> Int

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

Methods

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

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

unsafeIndex :: ((), ()) -> () -> Int

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

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

unsafeRangeSize :: ((), ()) -> Int

Ix Void Source #

Since: 4.8.0.0

Methods

range :: (Void, Void) -> [Void] Source #

index :: (Void, Void) -> Void -> Int Source #

unsafeIndex :: (Void, Void) -> Void -> Int

inRange :: (Void, Void) -> Void -> Bool Source #

rangeSize :: (Void, Void) -> Int Source #

unsafeRangeSize :: (Void, Void) -> Int

Ix a => Ix (Identity a) Source #
(Ix a, Ix b) => Ix (a, b) Source #

Since: 2.1

Methods

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

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

unsafeIndex :: ((a, b), (a, b)) -> (a, b) -> Int

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

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

unsafeRangeSize :: ((a, b), (a, b)) -> Int

Ix (Proxy k s) Source #

Since: 4.7.0.0

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

(Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3) Source #

Since: 2.1

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

Ix a => Ix (Const k a b) Source #

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

(Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) Source #

Since: 2.1

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

(Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5) Source #

Since: 2.1

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

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