Data.Ix
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | libraries@haskell.org |
| Стабильность | стабильная |
| Переносимость | переносимая |
| Безопасный Haskell | Надёжный |
| Язык | Haskell2010 |
Содержание
Описание
Класс 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 :: (a, a) -> [a] Исходный код
Список значений в поддиапазоне, определённом парой границ.
index :: (a, a) -> a -> Int Исходный код
Позиция индекса в поддиапазоне.
inRange :: (a, a) -> a -> Bool Исходный код
Возвращает True, лежит ли данный индекс в диапазоне, определённом парой границ.
rangeSize :: (a, a) -> Int Исходный код
Размер поддиапазона, определённого парой границ.
Примеры реализации
| Ix Bool | |
| Ix Символ | |
| Ix Целое | |
| Ix Int8 | |
| Ix Int16 | |
| Ix Int32 | |
| Ix Int64 | |
| Ix Целое число | |
| Ix Порядок | |
| Ix Word | |
| Ix Word8 | |
| Ix Word16 | |
| Ix Word32 | |
| Ix Word64 | |
| Ix () | |
| Ix GeneralCategory | |
| Ix Режим поиска | |
| Ix Режим ввода/вывода | |
| Ix Естественное число | |
| Ix Пустое значение | |
| (Ix a, Ix b) => Ix (a, b) | |
| Ix (Proxy k s) | |
| (Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3) | |
| (Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5) |
Вывод экземпляров 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/7.10.3/docs/html/libraries/base-4.8.2.0/Data-Ix.html