base-4.11.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

Contents

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 #

    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] #

    The list of values in the subrange defined by a bounding pair.

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

    The position of a subscript in the subrange.

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

    Returns True the given subscript lies in the range defined the bounding pair.

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

    The size of the subrange defined by a bounding pair.

    Instances
    Ix Bool #

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

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

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

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

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

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

    unsafeRangeSize :: (Bool, Bool) -> Int

    Ix Char #

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

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

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

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

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

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

    unsafeRangeSize :: (Char, Char) -> Int

    Ix Int #

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

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

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

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

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

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

    unsafeRangeSize :: (Int, Int) -> Int

    Ix Int8 #

    Since: base-2.1

    Instance details

    Defined in GHC.Int

    Methods

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

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

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

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

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

    unsafeRangeSize :: (Int8, Int8) -> Int

    Ix Int16 #

    Since: base-2.1

    Instance details

    Defined in GHC.Int

    Ix Int32 #

    Since: base-2.1

    Instance details

    Defined in GHC.Int

    Ix Int64 #

    Since: base-2.1

    Instance details

    Defined in GHC.Int

    Ix Integer #

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Ix Natural #

    Since: base-4.8.0.0

    Instance details

    Defined in GHC.Natural

    Ix Ordering #

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Ix Word #

    Since: base-4.6.0.0

    Instance details

    Defined in GHC.Arr

    Methods

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

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

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

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

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

    unsafeRangeSize :: (Word, Word) -> Int

    Ix Word8 #

    Since: base-2.1

    Instance details

    Defined in GHC.Word

    Ix Word16 #

    Since: base-2.1

    Instance details

    Defined in GHC.Word

    Ix Word32 #

    Since: base-2.1

    Instance details

    Defined in GHC.Word

    Ix Word64 #

    Since: base-2.1

    Instance details

    Defined in GHC.Word

    Ix () #

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

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

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

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

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

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

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

    Ix GeneralCategory # 
    Instance details

    Defined in GHC.Unicode

    Ix IOMode # 
    Instance details

    Defined in GHC.IO.IOMode

    Ix DecidedStrictness # 
    Instance details

    Defined in GHC.Generics

    Ix SourceStrictness # 
    Instance details

    Defined in GHC.Generics

    Ix SourceUnpackedness # 
    Instance details

    Defined in GHC.Generics

    Ix Associativity # 
    Instance details

    Defined in GHC.Generics

    Ix SeekMode # 
    Instance details

    Defined in GHC.IO.Device

    Ix Void #

    Since: base-4.8.0.0

    Instance details

    Defined in Data.Void

    Methods

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

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

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

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

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

    unsafeRangeSize :: (Void, Void) -> Int

    Ix a => Ix (Identity a) # 
    Instance details

    Defined in Data.Functor.Identity

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

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

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

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

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

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

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

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

    Ix (Proxy s) #

    Since: base-4.7.0.0

    Instance details

    Defined in Data.Proxy

    Methods

    range :: (Proxy s, Proxy s) -> [Proxy s] #

    index :: (Proxy s, Proxy s) -> Proxy s -> Int #

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

    inRange :: (Proxy s, Proxy s) -> Proxy s -> Bool #

    rangeSize :: (Proxy s, Proxy s) -> Int #

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

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

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

    range :: ((a1, a2, a3), (a1, a2, a3)) -> [(a1, a2, a3)] #

    index :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Int #

    unsafeIndex :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Int

    inRange :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Bool #

    rangeSize :: ((a1, a2, a3), (a1, a2, a3)) -> Int #

    unsafeRangeSize :: ((a1, a2, a3), (a1, a2, a3)) -> Int

    Ix a => Ix (Const a b) # 
    Instance details

    Defined in Data.Functor.Const

    Methods

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

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

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

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

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

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

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

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

    range :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> [(a1, a2, a3, a4)] #

    index :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Int #

    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 #

    rangeSize :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> Int #

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

    Since: base-2.1

    Instance details

    Defined in GHC.Arr

    Methods

    range :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> [(a1, a2, a3, a4, a5)] #

    index :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Int #

    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 #

    rangeSize :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> Int #

    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