Spec-Zone.ru › Haskell 7

Data.Ix

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка libraries@haskell.org
Стабильность стабильная
Переносимость переносимая
Безопасный 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
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

Spec-Zone.ru

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