Spec-Zone.ru › Haskell 8

Data.Ix

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддерживающий libraries@haskell.org
Устойчивость стабильная
Переносимость переносимая
Safe Haskell Надежная
Язык Haskell2010

Содержание

  • Класс Ix
  • Вывод экземпляров Ix

Описание

Класс Ix используется для отображения непрерывного поддиапазона значений в типе на целые числа. Он используется в основном для индексирования массивов (см. пакет array). Ix использует порядок строк.

Класс Ix

class Ord a => Ix a where Исходный код

Класс Ix используется для отображения непрерывного поддиапазона значений в типе на целые числа. Он используется в основном для индексирования массивов (см. пакет array).

Первый аргумент (l,u) каждой из этих операций — пара, определяющая нижнюю и верхнюю границы непрерывного поддиапазона значений.

Реализация имеет право предполагать следующие законы об этих операциях:

  • inRange (l,u) i == elem i (range (l,u))
  • range (l,u) !! index (l,u) i == i, когда inRange (l,u) i
  • map (index (l,u)) (range (l,u))) == [0..rangeSize (l,u)-1]
  • rangeSize (l,u) == length (range (l,u))

Минимальное полное определение

range, (index | unsafeIndex), inRange

Методы

range :: (a, a) -> [a] Исходный код

Список значений в поддиапазоне, определенном парой границ.

index :: (a, a) -> a -> Int Исходный код

Позиция индекса в поддиапазоне.

inRange :: (a, a) -> a -> Bool Исходный код

Возвращает True, лежит ли заданный индекс в диапазоне, определенном парой границ.

rangeSize :: (a, a) -> Int Исходный код

Размер поддиапазона, определенного парой границ.

Экземпляры
Подробности экземпляров
Ix Bool

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Int

Методы

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

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Int

Краткое описание методов

range :: (Int16, Int16) -> [Int16] Источник

index :: (Int16, Int16) -> Int16 -> Int Источник

unsafeIndex :: (Int16, Int16) -> Int16 -> Int Источник

inRange :: (Int16, Int16) -> Int16 -> Bool Источник

rangeSize :: (Int16, Int16) -> Int Источник

unsafeRangeSize :: (Int16, Int16) -> Int Источник

Ix Int32

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Int

Краткое описание методов

range :: (Int32, Int32) -> [Int32] Источник

index :: (Int32, Int32) -> Int32 -> Int Источник

unsafeIndex :: (Int32, Int32) -> Int32 -> Int Источник

inRange :: (Int32, Int32) -> Int32 -> Bool Источник

rangeSize :: (Int32, Int32) -> Int Источник

unsafeRangeSize :: (Int32, Int32) -> Int Источник

Ix Int64

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Int

Краткое описание методов

range :: (Int64, Int64) -> [Int64] Источник

index :: (Int64, Int64) -> Int64 -> Int Источник

unsafeIndex :: (Int64, Int64) -> Int64 -> Int Источник

inRange :: (Int64, Int64) -> Int64 -> Bool Источник

rangeSize :: (Int64, Int64) -> Int Источник

unsafeRangeSize :: (Int64, Int64) -> Int Источник

Ix Integer

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Ix

Краткое описание методов

range :: (Integer, Integer) -> [Integer] Источник

index :: (Integer, Integer) -> Integer -> Int Источник

unsafeIndex :: (Integer, Integer) -> Integer -> Int Источник

inRange :: (Integer, Integer) -> Integer -> Bool Источник

rangeSize :: (Integer, Integer) -> Int Источник

unsafeRangeSize :: (Integer, Integer) -> Int Источник

Ix Natural

С версии: base-4.8.0.0

Подробности экземпляра

Определено в GHC.Ix

Методы

range :: (Natural, Natural) -> [Natural] Исходный код

index :: (Natural, Natural) -> Natural -> Int Исходный код

unsafeIndex :: (Natural, Natural) -> Natural -> Int Исходный код

inRange :: (Natural, Natural) -> Natural -> Bool Исходный код

rangeSize :: (Natural, Natural) -> Int Исходный код

unsafeRangeSize :: (Natural, Natural) -> Int Исходный код

Ix Ordering

С момента: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

range :: (Ordering, Ordering) -> [Ordering] Исходный код

index :: (Ordering, Ordering) -> Ordering -> Int Исходный код

unsafeIndex :: (Ordering, Ordering) -> Ordering -> Int Исходный код

inRange :: (Ordering, Ordering) -> Ordering -> Bool Исходный код

rangeSize :: (Ordering, Ordering) -> Int Исходный код

unsafeRangeSize :: (Ordering, Ordering) -> Int Исходный код

Ix Word

С момента: base-4.6.0.0

Подробности экземпляра

Определено в GHC.Ix

Методы

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

С момента: base-2.1

Подробности экземпляра

Определено в GHC.Word

Методы

range :: (Word8, Word8) -> [Word8] Исходный код

index :: (Word8, Word8) -> Word8 -> Int Исходный код

unsafeIndex :: (Word8, Word8) -> Word8 -> Int Исходный код

inRange :: (Word8, Word8) -> Word8 -> Bool Исходный код

rangeSize :: (Word8, Word8) -> Int Исходный код

unsafeRangeSize :: (Word8, Word8) -> Int Исходный код

Ix Word16

С момента: base-2.1

Информация о экземпляре

Определено в GHC.Word

Краткое описание методов

range :: (Word16, Word16) -> [Word16] Исходный код

index :: (Word16, Word16) -> Word16 -> Int Исходный код

unsafeIndex :: (Word16, Word16) -> Word16 -> Int Исходный код

inRange :: (Word16, Word16) -> Word16 -> Bool Исходный код

rangeSize :: (Word16, Word16) -> Int Исходный код

unsafeRangeSize :: (Word16, Word16) -> Int Исходный код

Ix Word32

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Word

Краткое описание методов

range :: (Word32, Word32) -> [Word32] Исходный код

index :: (Word32, Word32) -> Word32 -> Int Исходный код

unsafeIndex :: (Word32, Word32) -> Word32 -> Int Исходный код

inRange :: (Word32, Word32) -> Word32 -> Bool Исходный код

rangeSize :: (Word32, Word32) -> Int Исходный код

unsafeRangeSize :: (Word32, Word32) -> Int Исходный код

Ix Word64

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Word

Краткое описание методов

range :: (Word64, Word64) -> [Word64] Исходный код

index :: (Word64, Word64) -> Word64 -> Int Исходный код

unsafeIndex :: (Word64, Word64) -> Word64 -> Int Исходный код

inRange :: (Word64, Word64) -> Word64 -> Bool Исходный код

rangeSize :: (Word64, Word64) -> Int Исходный код

unsafeRangeSize :: (Word64, Word64) -> Int Исходный код

Ix ()

С версии: base-2.1

Информация о экземпляре

Определено в GHC.Ix

Краткое описание методов

range :: ((), ()) -> [()] Исходный код

index :: ((), ()) -> () -> Int Исходный код

unsafeIndex :: ((), ()) -> () -> Int Исходный код

inRange :: ((), ()) -> () -> Bool Исходный код

rangeSize :: ((), ()) -> Int Исходный код

unsafeRangeSize :: ((), ()) -> Int Исходный код

Ix GeneralCategory

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Unicode

Методы

range :: (Категория символа, Категория символа) -> [Категория символа] Исходный код

index :: (Категория символа, Категория символа) -> Категория символа -> Целое Исходный код

unsafeIndex :: (Категория символа, Категория символа) -> Категория символа -> Целое Исходный код

inRange :: (Категория символа, Категория символа) -> Категория символа -> Булево Исходный код

rangeSize :: (Категория символа, Категория символа) -> Целое Исходный код

unsafeRangeSize :: (Категория символа, Категория символа) -> Целое Исходный код

Ix Режим ввода-вывода

С версии: base-4.2.0.0

Подробности экземпляра

Определено в GHC.IO.IOMode

Методы

range :: (Режим ввода-вывода, Режим ввода-вывода) -> [Режим ввода-вывода] Исходный код

index :: (Режим ввода-вывода, Режим ввода-вывода) -> Режим ввода-вывода -> Целое Исходный код

unsafeIndex :: (Режим ввода-вывода, Режим ввода-вывода) -> Режим ввода-вывода -> Целое Исходный код

inRange :: (Режим ввода-вывода, Режим ввода-вывода) -> Режим ввода-вывода -> Булево Исходный код

rangeSize :: (Режим ввода-вывода, Режим ввода-вывода) -> Целое Исходный код

unsafeRangeSize :: (Режим ввода-вывода, Режим ввода-вывода) -> Целое Исходный код

Ix Определённая строгая типизация

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Generics

Методы

range :: (Определённая строгая типизация, Определённая строгая типизация) -> [Определённая строгая типизация] Исходный код

index :: (Определённая строгая типизация, Определённая строгая типизация) -> Определённая строгая типизация -> Целое Исходный код

unsafeIndex :: (Определённая строгая типизация, Определённая строгая типизация) -> Определённая строгая типизация -> Целое Исходный код

inRange :: (Определённая строгая типизация, Определённая строгая типизация) -> Определённая строгая типизация -> Булево Исходный код

rangeSize :: (Определённая строгая типизация, Определённая строгая типизация) -> Целое Исходный код

unsafeRangeSize :: (Определённая строгая типизация, Определённая строгая типизация) -> Целое Исходный код

Ix Строгая типизация источника

С версии: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Generics

Методы

range :: (SourceStrictness, SourceStrictness) -> [SourceStrictness] Исходный код

index :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Исходный код

unsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Исходный код

inRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool Исходный код

rangeSize :: (SourceStrictness, SourceStrictness) -> Int Исходный код

unsafeRangeSize :: (SourceStrictness, SourceStrictness) -> Int Исходный код

Ix SourceUnpackedness

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Generics

Методы

range :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] Исходный код

index :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Исходный код

unsafeIndex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Исходный код

inRange :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool Исходный код

rangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Исходный код

unsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Исходный код

Ix Associativity

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Generics

Методы

range :: (Associativity, Associativity) -> [Associativity] Исходный код

index :: (Associativity, Associativity) -> Associativity -> Int Исходный код

unsafeIndex :: (Associativity, Associativity) -> Associativity -> Int Исходный код

inRange :: (Associativity, Associativity) -> Associativity -> Bool Исходный код

rangeSize :: (Associativity, Associativity) -> Int Исходный код

unsafeRangeSize :: (Associativity, Associativity) -> Int Исходный код

Ix SeekMode

С момента: base-4.2.0.0

Подробности экземпляра

Определено в GHC.IO.Device

Методы

range :: (SeekMode, SeekMode) -> [SeekMode] Исходный код

index :: (SeekMode, SeekMode) -> SeekMode -> Int Исходный код

unsafeIndex :: (SeekMode, SeekMode) -> SeekMode -> Int Исходный код

inRange :: (SeekMode, SeekMode) -> SeekMode -> Bool Исходный код

rangeSize :: (SeekMode, SeekMode) -> Int Исходный код

unsafeRangeSize :: (SeekMode, SeekMode) -> Int Исходный код

Ix Void

С момента: base-4.8.0.0

Подробности экземпляра

Определено в Data.Void

Методы

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 (Down a)

С момента: base-4.14.0.0

Подробности экземпляра

Определено в Data.Ord

Методы

range :: (Down a, Down a) -> [Down a] Исходный код

index :: (Down a, Down a) -> Down a -> Int Исходный код

unsafeIndex :: (Down a, Down a) -> Down a -> Int Исходный код

inRange :: (Down a, Down a) -> Down a -> Bool Исходный код

rangeSize :: (Down a, Down a) -> Int Исходный код

unsafeRangeSize :: (Down a, Down a) -> Int Исходный код

Ix a => Ix (Identity a)

С момента: base-4.9.0.0

Подробности экземпляра

Определено в Data.Functor.Identity

Методы

range :: (Identity a, Identity a) -> [Identity a] Исходный код

index :: (Identity a, Identity a) -> Identity a -> Int Исходный код

unsafeIndex :: (Identity a, Identity a) -> Identity a -> Int Исходный код

inRange :: (Identity a, Identity a) -> Identity a -> Bool Исходный код

rangeSize :: (Identity a, Identity a) -> Int Исходный код

unsafeRangeSize :: (Identity a, Identity a) -> Int Исходный код

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

С момента: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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)

С момента: base-4.7.0.0

Подробности экземпляра

Определено в Data.Proxy

Методы

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)

С момента: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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)

С момента: base-4.9.0.0

Подробности экземпляра

Определено в Data.Functor.Const

Методы

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)

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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)

С версии: base-2.1

Подробности экземпляра

Определено в GHC.Ix

Методы

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 Исходный код

Вывод экземпляров Ix

Объявления экземпляров, выведенные для класса Ix, возможны только для перечислений (т. е. типов данных, имеющих только нульарные конструкторы) и типов данных с единственным конструктором, включая произвольно большие кортежи, составные типы которых являются экземплярами Ix.

  • Для перечисления нульарные конструкторы предполагаются пронумерованными слева направо с индексами от 0 до n-1 включительно. Это тот же порядок, что и в классе Enum. Например, для типа данных:
       data Colour = Red | Orange | Yellow | Green | Blue | Indigo | Violet

у нас будет:

       range   (Yellow,Blue)        ==  [Yellow,Green,Blue]
       index   (Yellow,Blue) Green  ==  1
       inRange (Yellow,Blue) Red    ==  False
  • Для типов данных с единственным конструктором объявления выведенных экземпляров аналогичны тем, которые показаны для кортежей в главе 19, разделе 2 отчёта Haskell 2010: https://www.haskell.org/onlinereport/haskell2010/haskellch19.html.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Data-Ix.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API