GHC.Ix
| Авторские права | (c) Университет Глазго 1994-2000 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Поддерживающий | cvs-ghc@haskell.org |
| Стабильность | внутренняя |
| Переносимость | непереносимая (расширения GHC) |
| Безопасный Haskell | Нет |
| Язык | Haskell2010 |
Описание
Реализация класса типов Ix в GHC.
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 Исходный код
Позиция индекса в поддиапазоне.
unsafeIndex :: (a, a) -> a -> Int Исходный код
Аналогично index, но без проверки, что значение находится в диапазоне.
inRange :: (a, a) -> a -> Bool Исходный код
Возвращает True заданный индекс находится в диапазоне, определенном парой границ.
rangeSize :: (a, a) -> Int Исходный код
Размер поддиапазона, определенного парой границ.
unsafeRangeSize :: (a, a) -> Int Исходный код
Как rangeSize, но без проверки, что верхняя граница находится в диапазоне.
Определено в GHC.Int | |
| Ix Int32 | Since: base-2.1 |
Определено в GHC.Int | |
| Ix Int64 | Since: base-2.1 |
Определено в GHC.Int | |
| Ix Integer | Since: base-2.1 |
Определено в GHC.Ix Методы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 |
Определено в 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 Исходный код | |
© 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/GHC-Ix.html