GHC.Arr
| Авторские права | (c) The University of Glasgow 1994-2000 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Сопровождающие | ghc-devs@haskell.org |
| Стабильность | внутренний |
| Переносимость | непереносимый (расширения GHC) |
| Безопасный Haskell | Нет |
| Язык | Haskell2010 |
Содержание
Описание
Реализация массивов в GHC.
API этого модуля нестабилен и не предназначен для использования широкой публикой. Если вам непременно нужно от него зависеть, обязательно задайте строгую верхнюю границу версии, например base < 4.X вместо base < 5, поскольку интерфейс может быстро меняться без особых предупреждений.
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.Internal.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 (Down a) Источник | Начиная с: base-4.14.0.0 |
Определено в GHC.Internal.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 (Solo a) Источник | |
Определено в GHC.Internal.Ix Методыrange :: (Solo a, Solo a) -> [Solo a] Источник index :: (Solo a, Solo a) -> Solo a -> Int Источник unsafeIndex :: (Solo a, Solo a) -> Solo a -> Int Источник inRange :: (Solo a, Solo a) -> Solo a -> Bool Источник rangeSize :: (Solo a, Solo a) -> Int Источник unsafeRangeSize :: (Solo a, Solo a) -> Int Источник | |
| Ix (Proxy s) Источник | Начиная с: base-4.7.0.0 |
Определено в GHC.Internal.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 a, Ix b) => Ix (a, b) Источник | Начиная с: base-2.1 |
Определено в GHC.Internal.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 a => Ix (Const a b) Источник | Начиная с: base-4.9.0.0 |
Определено в GHC.Internal.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 (a1, a2, a3) Источник | Начиная с: base-2.1 |
Определено в GHC.Internal.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 a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4) Источник | Начиная с: base-2.1 |
Определено в GHC.Internal.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.Internal.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 a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6) => Ix (a1, a2, a3, a4, a5, a6) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6), (a1, a2, a3, a4, a5, a6)) -> [(a1, a2, a3, a4, a5, a6)] Источник index :: ((a1, a2, a3, a4, a5, a6), (a1, a2, a3, a4, a5, a6)) -> (a1, a2, a3, a4, a5, a6) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6), (a1, a2, a3, a4, a5, a6)) -> (a1, a2, a3, a4, a5, a6) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6), (a1, a2, a3, a4, a5, a6)) -> (a1, a2, a3, a4, a5, a6) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6), (a1, a2, a3, a4, a5, a6)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6), (a1, a2, a3, a4, a5, a6)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7) => Ix (a1, a2, a3, a4, a5, a6, a7) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7), (a1, a2, a3, a4, a5, a6, a7)) -> [(a1, a2, a3, a4, a5, a6, a7)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7), (a1, a2, a3, a4, a5, a6, a7)) -> (a1, a2, a3, a4, a5, a6, a7) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7), (a1, a2, a3, a4, a5, a6, a7)) -> (a1, a2, a3, a4, a5, a6, a7) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7), (a1, a2, a3, a4, a5, a6, a7)) -> (a1, a2, a3, a4, a5, a6, a7) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7), (a1, a2, a3, a4, a5, a6, a7)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7), (a1, a2, a3, a4, a5, a6, a7)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8) => Ix (a1, a2, a3, a4, a5, a6, a7, a8) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8), (a1, a2, a3, a4, a5, a6, a7, a8)) -> [(a1, a2, a3, a4, a5, a6, a7, a8)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8), (a1, a2, a3, a4, a5, a6, a7, a8)) -> (a1, a2, a3, a4, a5, a6, a7, a8) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8), (a1, a2, a3, a4, a5, a6, a7, a8)) -> (a1, a2, a3, a4, a5, a6, a7, a8) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8), (a1, a2, a3, a4, a5, a6, a7, a8)) -> (a1, a2, a3, a4, a5, a6, a7, a8) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8), (a1, a2, a3, a4, a5, a6, a7, a8)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8), (a1, a2, a3, a4, a5, a6, a7, a8)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9), (a1, a2, a3, a4, a5, a6, a7, a8, a9)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9), (a1, a2, a3, a4, a5, a6, a7, a8, a9)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9), (a1, a2, a3, a4, a5, a6, a7, a8, a9)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9), (a1, a2, a3, a4, a5, a6, a7, a8, a9)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9), (a1, a2, a3, a4, a5, a6, a7, a8, a9)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9), (a1, a2, a3, a4, a5, a6, a7, a8, a9)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC, Ix aD) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC, Ix aD, Ix aE) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE) Источник | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)] Источник index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE) -> Int Источник unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE) -> Int Источник inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE) -> Bool Источник rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)) -> Int Источник unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)) -> Int Источник | |
| (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC, Ix aD, Ix aE, Ix aF) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF) Исходный код | Начиная с: base-4.15.0.0 |
Определено в GHC.Internal.Ix Методыrange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)) -> [(a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)] Исходный код index :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF) -> Int Исходный код unsafeIndex :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF) -> Int Исходный код inRange :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)) -> (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF) -> Bool Исходный код rangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)) -> Int Исходный код unsafeRangeSize :: ((a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF), (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)) -> Int Исходный код | |
data Array i e Исходный код
Тип неизменяемых нестрогих (boxed) массивов с индексами в i и элементами в e.
Экземпляры
| Functor (Array i) Источник | С: base-2.1 |
| Foldable (Array i) Источник | С: base-4.8.0.0 |
Определено в GHC.Internal.Data.Foldable Методыfold :: Monoid m => Array i m -> m Источник foldMap :: Monoid m => (a -> m) -> Array i a -> m Источник foldMap' :: Monoid m => (a -> m) -> Array i a -> m Источник foldr :: (a -> b -> b) -> b -> Array i a -> b Источник foldr' :: (a -> b -> b) -> b -> Array i a -> b Источник foldl :: (b -> a -> b) -> b -> Array i a -> b Источник foldl' :: (b -> a -> b) -> b -> Array i a -> b Источник foldr1 :: (a -> a -> a) -> Array i a -> a Источник foldl1 :: (a -> a -> a) -> Array i a -> a Источник toList :: Array i a -> [a] Источник null :: Array i a -> Bool Источник length :: Array i a -> Int Источник elem :: Eq a => a -> Array i a -> Bool Источник maximum :: Ord a => Array i a -> a Источник minimum :: Ord a => Array i a -> a Источник | |
| Ix i => Traversable (Array i) Источник | С: base-2.1 |
Определено в GHC.Internal.Data.Traversable | |
| (Ix i, Eq e) => Eq (Array i e) Источник | С: base-2.1 |
| (Ix i, Ord e) => Ord (Array i e) Источник | С: base-2.1 |
Определено в GHC.Internal.Arr Методыcompare :: Array i e -> Array i e -> Ordering Источник (<) :: Array i e -> Array i e -> Bool Источник (<=) :: Array i e -> Array i e -> Bool Источник (>) :: Array i e -> Array i e -> Bool Источник (>=) :: Array i e -> Array i e -> Bool Источник | |
| (Data a, Data b, Ix a) => Data (Array a b) Источник | С: base-4.8.0.0 |
Определено в GHC.Internal.Data.Data Методыgfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Array a b -> c (Array a b) Источник gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Array a b) Источник toConstr :: Array a b -> Constr Источник dataTypeOf :: Array a b -> DataType Источник dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Array a b)) Источник dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Array a b)) Источник gmapT :: (forall b0. Data b0 => b0 -> b0) -> Array a b -> Array a b Источник gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Array a b -> r Источник gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Array a b -> r Источник gmapQ :: (forall d. Data d => d -> u) -> Array a b -> [u] Источник gmapQi :: Int -> (forall d. Data d => d -> u) -> Array a b -> u Источник gmapM :: Monad m => (forall d. Data d => d -> m d) -> Array a b -> m (Array a b) Источник gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Array a b -> m (Array a b) Источник gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Array a b -> m (Array a b) Источник | |
| (Ix a, Read a, Read b) => Read (Array a b) Источник | С: base-2.1 |
| (Ix a, Show a, Show b) => Show (Array a b) Источник | С: base-2.1 |
Изменяемые, упакованные, нестрогие массивы в монаде ST. Аргументы типа следующие:
-
s: аргумент переменной состояния для типаST -
i: тип индекса массива (должен быть экземпляромIx) -
e: тип элемента массива.
Конструкторы
| STArray !i !i !Int (MutableArray# s e) |
Экземпляры
arrEleBottom :: a Источник
Аргументы
| :: Ix i | |
| => (i, i) | пара границ, каждая из которых имеет тип индекса массива. Эти границы представляют собой наименьший и наибольший индексы массива, именно в таком порядке. Например, вектор длины |
| -> [(i, e)] | список ассоциаций вида (индекс, значение). Обычно этот список задаётся как выражение-генератор. Ассоциация |
| -> Array i e |
Создаёт массив с заданными границами и значениями для указанных индексов в этих границах.
Массив не определён (то есть равен нижнему элементу) при наличии в списке индекса, выходящего за границы. В отчёте Haskell 2010 также указано, что если две ассоциации в списке имеют одинаковый индекс, значение по этому индексу не определено (то есть равно нижнему элементу). Однако в реализации GHC значением по такому индексу будет часть значения последней ассоциации с этим индексом в списке.
Поскольку индексы необходимо проверять на наличие этих ошибок, array является строгой по аргументу границ и индексам списка ассоциаций, но нестрогой по значениям. Поэтому возможны, например, такие рекуррентные определения:
a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i <- [2..100]])
В списке ассоциаций необязательно должны присутствовать все индексы, лежащие в границах массива, но значения для отсутствующих индексов будут не определены (то есть равны нижнему элементу).
Если в каком-либо измерении нижняя граница больше верхней, массив допустим, но пуст. Индексация пустого массива всегда приводит к ошибке выхода за границы, однако bounds по-прежнему возвращает границы, с которыми был создан массив.
listArray :: Ix i => (i, i) -> [e] -> Array i e Источник
Создаёт массив по паре границ и списку значений в порядке индексов.
(!) :: Ix i => Array i e -> i -> e infixl 9 Источник
Значение массива по заданному индексу.
safeRangeSize :: Ix i => (i, i) -> Int Источник
safeIndex :: Ix i => (i, i) -> Int -> i -> Int Источник
Аргументы
| :: Int | Искомый индекс. |
| -> Int | Максимальная граница массива. |
| -> Int | Это не Int, а исключение. |
Используется для вызова исключений в функциях проверки границ массива.
⚠ Эта функция во всех случаях выбрасывает исключение SomeException.
Примеры
>>> badSafeIndex 2 5 *** Exception: Error in array index; 2 not in range [0..5)
bounds :: Array i e -> (i, i) Источник
Границы, с которыми был создан массив.
numElements :: Array i e -> Int Источник
Количество элементов в массиве.
numElementsSTArray :: STArray s i e -> Int Источник
indices :: Ix i => Array i e -> [i] Источник
Список индексов массива в порядке возрастания.
elems :: Array i e -> [e] Источник
Список элементов массива в порядке индексов.
assocs :: Ix i => Array i e -> [(i, e)] Источник
Список ассоциаций массива в порядке индексов.
Аргументы
| :: Ix i | |
| => (e -> a -> e) | функция накопления |
| -> e | начальное значение |
| -> (i, i) | границы массива |
| -> [(i, a)] | список ассоциаций |
| -> Array i e |
Функция accumArray обрабатывает повторяющиеся индексы в списке ассоциаций с помощью функции накопления, которая объединяет значения ассоциаций с одинаковым индексом.
Например, для списка значений некоторого типа индексов функция hist строит гистограмму количества вхождений каждого индекса в заданном диапазоне:
hist :: (Ix a, Num b) => (a,a) -> [a] -> Array a b hist bnds is = accumArray (+) 0 bnds [(i, 1) | i<-is, inRange bnds i]
accumArray является строгой по каждому результату применения функции накопления, хотя начальное значение вычисляется лениво. Поэтому в отличие от массивов, созданных с помощью array, массивы с накоплением, как правило, не должны быть рекурсивными.
adjust :: (e -> a -> e) -> MutableArray# s e -> (Int, a) -> STRep s b -> STRep s b Источник
(//) :: Ix i => Array i e -> [(i, e)] -> Array i e infixl 9 Источник
Создаёт массив, идентичный первому аргументу, за исключением того, что он обновлён ассоциациями из правого аргумента. Например, если m — матрица размера n на n с индексацией от единицы, то
m//[((i,i), 0) | i <- [1..n]]
представляет собой ту же матрицу, но с нулями на диагонали.
Повторяющиеся индексы в списке ассоциаций обрабатываются так же, как в array: согласно Haskell 2010, результирующий массив не определён (то есть равен нижнему элементу), но реализация GHC использует последнюю ассоциацию для каждого индекса.
accum :: Ix i => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e Источник
accum f принимает массив и список ассоциаций и накапливает пары из списка в массиве с помощью функции накопления f. Таким образом, accumArray можно определить с помощью accum:
accumArray f z b = accum f (array b [(i, z) | i <- range b])
accum является строгой по всем результатам применения накопления. Однако начальные значения массива вычисляются лениво.
amap :: (a -> b) -> Array i a -> Array i b Источник
ixmap :: (Ix i, Ix j) => (i, i) -> (i -> j) -> Array j e -> Array i e Источник
ixmap позволяет преобразовывать индексы массива. Эту функцию можно рассматривать как композицию справа с отображением, заданным исходным массивом.
Аналогичное преобразование значений массива можно выполнить с помощью fmap из экземпляра Array класса Functor.
eqArray :: (Ix i, Eq e) => Array i e -> Array i e -> Bool Источник
cmpArray :: (Ix i, Ord e) => Array i e -> Array i e -> Ordering Источник
cmpIntArray :: Ord e => Array Int e -> Array Int e -> Ordering Источник
newSTArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) Источник
boundsSTArray :: STArray s i e -> (i, i) Источник
readSTArray :: Ix i => STArray s i e -> i -> ST s e Источник
writeSTArray :: Ix i => STArray s i e -> i -> e -> ST s () Источник
freezeSTArray :: STArray s i e -> ST s (Array i e) Источник
thawSTArray :: Array i e -> ST s (STArray s i e) Источник
foldlElems :: (b -> a -> b) -> b -> Array i a -> b Источник
Свёртка элементов влево
foldlElems' :: (b -> a -> b) -> b -> Array i a -> b Источник
Строгая свёртка элементов влево
foldl1Elems :: (a -> a -> a) -> Array i a -> a Источник
Свёртка элементов влево без начального значения
foldrElems :: (a -> b -> b) -> b -> Array i a -> b Источник
Свёртка элементов вправо
foldrElems' :: (a -> b -> b) -> b -> Array i a -> b Источник
Строгая свёртка элементов вправо
foldr1Elems :: (a -> a -> a) -> Array i a -> a Источник
Свёртка элементов вправо без начального значения
Небезопасные операции
fill :: MutableArray# s e -> (Int, e) -> STRep s a -> STRep s a Источник
done :: i -> i -> Int -> MutableArray# s e -> STRep s (Array i e) Источник
unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e Источник
unsafeArray' :: (i, i) -> Int -> [(Int, e)] -> Array i e Источник
lessSafeIndex :: Ix i => (i, i) -> Int -> i -> Int Источник
unsafeAt :: Array i e -> Int -> e Источник
unsafeReplace :: Array i e -> [(Int, e)] -> Array i e Источник
unsafeAccumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(Int, a)] -> Array i e Источник
unsafeAccumArray' :: (e -> a -> e) -> e -> (i, i) -> Int -> [(Int, a)] -> Array i e Источник
unsafeAccum :: (e -> a -> e) -> Array i e -> [(Int, a)] -> Array i e Источник
unsafeReadSTArray :: STArray s i e -> Int -> ST s e Источник
unsafeWriteSTArray :: STArray s i e -> Int -> e -> ST s () Источник
unsafeFreezeSTArray :: STArray s i e -> ST s (Array i e) Источник
unsafeThawSTArray :: Array i e -> ST s (STArray s i e) Источник
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/GHC-Arr.html