GHC.Ix

base-4.14.0.0: Basic libraries

Copyright | (c) The University of Glasgow 1994-2000
License | see libraries/base/LICENSE
Maintainer | cvs-ghc@haskell.org
Stability | internal
Portability | non-portable (GHC extensions)
Safe Haskell | None
Language | Haskell2010

GHC.Ix

Description

GHC's Ix typeclass implementation.

Synopsis

- class Ord a => Ix a where
  - range :: (a, a) -> [a]
  - index :: (a, a) -> a -> Int
  - unsafeIndex :: (a, a) -> a -> Int
  - inRange :: (a, a) -> a -> Bool
  - rangeSize :: (a, a) -> Int
  - unsafeRangeSize :: (a, a) -> Int

# Documentation

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))` ``

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.

unsafeIndex :: (a, a) -> a -> Int Source #

Like `index`, but without checking that the value is in range.

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.

unsafeRangeSize :: (a, a) -> Int Source #

like `rangeSize`, but without checking that the upper bound is in range.

#### Instances

Instances details

Ix Bool # | Since: base-2.1
Instance details Defined in GHC.Ix Methods range :: (Bool, Bool) -> [Bool] Source # index :: (Bool, Bool) -> Bool -> Int Source # unsafeIndex :: (Bool, Bool) -> Bool -> Int Source # inRange :: (Bool, Bool) -> Bool -> Bool Source # rangeSize :: (Bool, Bool) -> Int Source # unsafeRangeSize :: (Bool, Bool) -> Int Source #
Ix Char # | Since: base-2.1
Instance details Defined in GHC.Ix Methods range :: (Char, Char) -> [Char] Source # index :: (Char, Char) -> Char -> Int Source # unsafeIndex :: (Char, Char) -> Char -> Int Source # inRange :: (Char, Char) -> Char -> Bool Source # rangeSize :: (Char, Char) -> Int Source # unsafeRangeSize :: (Char, Char) -> Int Source #
Ix Int # | Since: base-2.1
Instance details Defined in GHC.Ix Methods range :: (Int, Int) -> [Int] Source # index :: (Int, Int) -> Int -> Int Source # unsafeIndex :: (Int, Int) -> Int -> Int Source # inRange :: (Int, Int) -> Int -> Bool Source # rangeSize :: (Int, Int) -> Int Source # unsafeRangeSize :: (Int, Int) -> Int Source #
Ix Int8 # | Since: base-2.1
Instance details Defined in GHC.Int Methods range :: (Int8, Int8) -> [Int8] Source # index :: (Int8, Int8) -> Int8 -> Int Source # unsafeIndex :: (Int8, Int8) -> Int8 -> Int Source # inRange :: (Int8, Int8) -> Int8 -> Bool Source # rangeSize :: (Int8, Int8) -> Int Source # unsafeRangeSize :: (Int8, Int8) -> Int Source #
Ix Int16 # | Since: base-2.1
Instance details Defined in GHC.Int Methods range :: (Int16, Int16) -> [Int16] Source # index :: (Int16, Int16) -> Int16 -> Int Source # unsafeIndex :: (Int16, Int16) -> Int16 -> Int Source # inRange :: (Int16, Int16) -> Int16 -> Bool Source # rangeSize :: (Int16, Int16) -> Int Source # unsafeRangeSize :: (Int16, Int16) -> Int Source #
Ix Int32 # | Since: base-2.1
Instance details Defined in GHC.Int Methods range :: (Int32, Int32) -> [Int32] Source # index :: (Int32, Int32) -> Int32 -> Int Source # unsafeIndex :: (Int32, Int32) -> Int32 -> Int Source # inRange :: (Int32, Int32) -> Int32 -> Bool Source # rangeSize :: (Int32, Int32) -> Int Source # unsafeRangeSize :: (Int32, Int32) -> Int Source #
Ix Int64 # | Since: base-2.1
Instance details Defined in GHC.Int Methods range :: (Int64, Int64) -> [Int64] Source # index :: (Int64, Int64) -> Int64 -> Int Source # unsafeIndex :: (Int64, Int64) -> Int64 -> Int Source # inRange :: (Int64, Int64) -> Int64 -> Bool Source # rangeSize :: (Int64, Int64) -> Int Source # unsafeRangeSize :: (Int64, Int64) -> Int Source #
Ix Integer # | Since: base-2.1
Instance details Defined in GHC.Ix Methods range :: (Integer, Integer) -> [Integer] Source # index :: (Integer, Integer) -> Integer -> Int Source # unsafeIndex :: (Integer, Integer) -> Integer -> Int Source # inRange :: (Integer, Integer) -> Integer -> Bool Source # rangeSize :: (Integer, Integer) -> Int Source # unsafeRangeSize :: (Integer, Integer) -> Int Source #
Ix Natural # | Since: base-4.8.0.0
Instance details Defined in GHC.Ix Methods range :: (Natural, Natural) -> [Natural] Source # index :: (Natural, Natural) -> Natural -> Int Source # unsafeIndex :: (Natural, Natural) -> Natural -> Int Source # inRange :: (Natural, Natural) -> Natural -> Bool Source # rangeSize :: (Natural, Natural) -> Int Source # unsafeRangeSize :: (Natural, Natural) -> Int Source #
Ix Ordering # | Since: base-2.1
Instance details Defined in GHC.Ix Methods range :: (Ordering, Ordering) -> [Ordering] Source # index :: (Ordering, Ordering) -> Ordering -> Int Source # unsafeIndex :: (Ordering, Ordering) -> Ordering -> Int Source # inRange :: (Ordering, Ordering) -> Ordering -> Bool Source # rangeSize :: (Ordering, Ordering) -> Int Source # unsafeRangeSize :: (Ordering, Ordering) -> Int Source #
Ix Word # | Since: base-4.6.0.0
Instance details Defined in GHC.Ix Methods range :: (Word, Word) -> [Word] Source # index :: (Word, Word) -> Word -> Int Source # unsafeIndex :: (Word, Word) -> Word -> Int Source # inRange :: (Word, Word) -> Word -> Bool Source # rangeSize :: (Word, Word) -> Int Source # unsafeRangeSize :: (Word, Word) -> Int Source #
Ix Word8 # | Since: base-2.1
Instance details Defined in GHC.Word Methods range :: (Word8, Word8) -> [Word8] Source # index :: (Word8, Word8) -> Word8 -> Int Source # unsafeIndex :: (Word8, Word8) -> Word8 -> Int Source # inRange :: (Word8, Word8) -> Word8 -> Bool Source # rangeSize :: (Word8, Word8) -> Int Source # unsafeRangeSize :: (Word8, Word8) -> Int Source #
Ix Word16 # | Since: base-2.1
Instance details Defined in GHC.Word Methods range :: (Word16, Word16) -> [Word16] Source # index :: (Word16, Word16) -> Word16 -> Int Source # unsafeIndex :: (Word16, Word16) -> Word16 -> Int Source # inRange :: (Word16, Word16) -> Word16 -> Bool Source # rangeSize :: (Word16, Word16) -> Int Source # unsafeRangeSize :: (Word16, Word16) -> Int Source #
Ix Word32 # | Since: base-2.1
Instance details Defined in GHC.Word Methods range :: (Word32, Word32) -> [Word32] Source # index :: (Word32, Word32) -> Word32 -> Int Source # unsafeIndex :: (Word32, Word32) -> Word32 -> Int Source # inRange :: (Word32, Word32) -> Word32 -> Bool Source # rangeSize :: (Word32, Word32) -> Int Source # unsafeRangeSize :: (Word32, Word32) -> Int Source #
Ix Word64 # | Since: base-2.1
Instance details Defined in GHC.Word Methods range :: (Word64, Word64) -> [Word64] Source # index :: (Word64, Word64) -> Word64 -> Int Source # unsafeIndex :: (Word64, Word64) -> Word64 -> Int Source # inRange :: (Word64, Word64) -> Word64 -> Bool Source # rangeSize :: (Word64, Word64) -> Int Source # unsafeRangeSize :: (Word64, Word64) -> Int Source #
Ix () # | Since: base-2.1
Instance details Defined in GHC.Ix Methods range :: ((), ()) -> [()] Source # index :: ((), ()) -> () -> Int Source # unsafeIndex :: ((), ()) -> () -> Int Source # inRange :: ((), ()) -> () -> Bool Source # rangeSize :: ((), ()) -> Int Source # unsafeRangeSize :: ((), ()) -> Int Source #
Ix GeneralCategory # | Since: base-2.1
Instance details Defined in GHC.Unicode Methods range :: (GeneralCategory, GeneralCategory) -> [GeneralCategory] Source # index :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Int Source # unsafeIndex :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Int Source # inRange :: (GeneralCategory, GeneralCategory) -> GeneralCategory -> Bool Source # rangeSize :: (GeneralCategory, GeneralCategory) -> Int Source # unsafeRangeSize :: (GeneralCategory, GeneralCategory) -> Int Source #
Ix IOMode # | Since: base-4.2.0.0
Instance details Defined in GHC.IO.IOMode Methods range :: (IOMode, IOMode) -> [IOMode] Source # index :: (IOMode, IOMode) -> IOMode -> Int Source # unsafeIndex :: (IOMode, IOMode) -> IOMode -> Int Source # inRange :: (IOMode, IOMode) -> IOMode -> Bool Source # rangeSize :: (IOMode, IOMode) -> Int Source # unsafeRangeSize :: (IOMode, IOMode) -> Int Source #
Ix DecidedStrictness # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods range :: (DecidedStrictness, DecidedStrictness) -> [DecidedStrictness] Source # index :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int Source # unsafeIndex :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Int Source # inRange :: (DecidedStrictness, DecidedStrictness) -> DecidedStrictness -> Bool Source # rangeSize :: (DecidedStrictness, DecidedStrictness) -> Int Source # unsafeRangeSize :: (DecidedStrictness, DecidedStrictness) -> Int Source #
Ix SourceStrictness # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods range :: (SourceStrictness, SourceStrictness) -> [SourceStrictness] Source # index :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Source # unsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Source # inRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool Source # rangeSize :: (SourceStrictness, SourceStrictness) -> Int Source # unsafeRangeSize :: (SourceStrictness, SourceStrictness) -> Int Source #
Ix SourceUnpackedness # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods range :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] Source # index :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Source # unsafeIndex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Source # inRange :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool Source # rangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Source # unsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Source #
Ix Associativity # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods range :: (Associativity, Associativity) -> [Associativity] Source # index :: (Associativity, Associativity) -> Associativity -> Int Source # unsafeIndex :: (Associativity, Associativity) -> Associativity -> Int Source # inRange :: (Associativity, Associativity) -> Associativity -> Bool Source # rangeSize :: (Associativity, Associativity) -> Int Source # unsafeRangeSize :: (Associativity, Associativity) -> Int Source #
Ix SeekMode # | Since: base-4.2.0.0
Instance details Defined in GHC.IO.Device Methods range :: (SeekMode, SeekMode) -> [SeekMode] Source # index :: (SeekMode, SeekMode) -> SeekMode -> Int Source # unsafeIndex :: (SeekMode, SeekMode) -> SeekMode -> Int Source # inRange :: (SeekMode, SeekMode) -> SeekMode -> Bool Source # rangeSize :: (SeekMode, SeekMode) -> Int Source # unsafeRangeSize :: (SeekMode, SeekMode) -> Int Source #
Ix Void # | Since: base-4.8.0.0
Instance details Defined in Data.Void Methods range :: (Void, Void) -> [Void] Source # index :: (Void, Void) -> Void -> Int Source # unsafeIndex :: (Void, Void) -> Void -> Int Source # inRange :: (Void, Void) -> Void -> Bool Source # rangeSize :: (Void, Void) -> Int Source # unsafeRangeSize :: (Void, Void) -> Int Source #
Ix a => Ix (Down a) # | Since: base-4.14.0.0
Instance details Defined in Data.Ord Methods range :: (Down a, Down a) -> [Down a] Source # index :: (Down a, Down a) -> Down a -> Int Source # unsafeIndex :: (Down a, Down a) -> Down a -> Int Source # inRange :: (Down a, Down a) -> Down a -> Bool Source # rangeSize :: (Down a, Down a) -> Int Source # unsafeRangeSize :: (Down a, Down a) -> Int Source #
Ix a => Ix (Identity a) # | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Identity 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 Source # inRange :: (Identity a, Identity a) -> Identity a -> Bool Source # rangeSize :: (Identity a, Identity a) -> Int Source # unsafeRangeSize :: (Identity a, Identity a) -> Int Source #
(Ix a, Ix b) => Ix (a, b) # | Since: base-2.1
Instance details Defined in GHC.Ix 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 Source # inRange :: ((a, b), (a, b)) -> (a, b) -> Bool Source # rangeSize :: ((a, b), (a, b)) -> Int Source # unsafeRangeSize :: ((a, b), (a, b)) -> Int Source #
Ix (Proxy s) # | Since: base-4.7.0.0
Instance details Defined in Data.Proxy Methods range :: (Proxy s, Proxy s) -> [Proxy s] Source # index :: (Proxy s, Proxy s) -> Proxy s -> Int Source # unsafeIndex :: (Proxy s, Proxy s) -> Proxy s -> Int Source # inRange :: (Proxy s, Proxy s) -> Proxy s -> Bool Source # rangeSize :: (Proxy s, Proxy s) -> Int Source # unsafeRangeSize :: (Proxy s, Proxy s) -> Int Source #
(Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3) # | Since: base-2.1
Instance details Defined in GHC.Ix 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 Source # 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 Source #
Ix a => Ix (Const a b) # | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Const Methods range :: (Const a b, Const a b) -> [Const a b] Source # index :: (Const a b, Const a b) -> Const a b -> Int Source # unsafeIndex :: (Const a b, Const a b) -> Const a b -> Int Source # inRange :: (Const a b, Const a b) -> Const a b -> Bool Source # rangeSize :: (Const a b, Const a b) -> Int Source # unsafeRangeSize :: (Const a b, Const a b) -> Int Source #
(Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) # | Since: base-2.1
Instance details Defined in GHC.Ix 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 Source # 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 Source #
(Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5) # | Since: base-2.1
Instance details Defined in GHC.Ix 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 Source # 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 Source #