Spec-Zone.ru › Haskell 9

Data.Array.Base

Авторское право (c) The University of Glasgow 2001
Лицензия в стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность экспериментальный
Переносимость непереносимый (MPTCs, используется Control.Monad.ST)
Безопасный Haskell Нет
Язык Haskell2010

Описание

Основа для IArray и MArray. Не предназначен для внешнего использования; используйте вместо него IArray или MArray.

ПРЕДУПРЕЖДЕНИЕ

Этот модуль считается внутренним.

Политика версионирования пакетов не применяется.

Содержимое этого модуля может измениться любым образом и без предупреждения между минорными версиями этого пакета.

От авторов, импортирующих этот модуль, ожидается пристальное отслеживание его разработки.

class IArray (a :: Type -> Type -> Type) e where Исходный код

Класс неизменяемых типов массивов.

Тип массива имеет вид (a i e), где a — конструктор типа массива (kind * -> * -> *), i — тип индекса (член класса Ix), а e — тип элемента. Класс IArray параметризован как a, так и e, что позволяет определять экземпляры, специализированные для определённых типов элементов.

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

bounds, numElements, unsafeArray, unsafeAt

Методы

bounds :: Ix i => a i e -> (i, i) Исходный код

Извлекает границы неизменяемого массива

numElements :: Ix i => a i e -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> a i e Исходный код

unsafeAt :: Ix i => a i e -> Int -> e Исходный код

unsafeReplace :: Ix i => a i e -> [(Int, e)] -> a i e Исходный код

unsafeAccum :: Ix i => (e -> e' -> e) -> a i e -> [(Int, e')] -> a i e Исходный код

unsafeAccumArray :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> a i e Исходный код

Экземпляры
Подробности об экземплярах
IArray UArray Int16 Исходный код
Подробности об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int16 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int16 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int16)] -> UArray i Int16 Исходный код

unsafeAt :: Ix i => UArray i Int16 -> Int -> Int16 Исходный код

unsafeReplace :: Ix i => UArray i Int16 -> [(Int, Int16)] -> UArray i Int16 Исходный код

unsafeAccum :: Ix i => (Int16 -> e' -> Int16) -> UArray i Int16 -> [(Int, e')] -> UArray i Int16 Исходный код

unsafeAccumArray :: Ix i => (Int16 -> e' -> Int16) -> Int16 -> (i, i) -> [(Int, e')] -> UArray i Int16 Исходный код

IArray UArray Int32 Исходный код
Подробности об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int32 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int32 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int32)] -> UArray i Int32 Исходный код

unsafeAt :: Ix i => UArray i Int32 -> Int -> Int32 Исходный код

unsafeReplace :: Ix i => UArray i Int32 -> [(Int, Int32)] -> UArray i Int32 Исходный код

unsafeAccum :: Ix i => (Int32 -> e' -> Int32) -> UArray i Int32 -> [(Int, e')] -> UArray i Int32 Исходный код

unsafeAccumArray :: Ix i => (Int32 -> e' -> Int32) -> Int32 -> (i, i) -> [(Int, e')] -> UArray i Int32 Исходный код

IArray UArray Int64 Исходный код
Подробности об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int64 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int64 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int64)] -> UArray i Int64 Исходный код

unsafeAt :: Ix i => UArray i Int64 -> Int -> Int64 Исходный код

unsafeReplace :: Ix i => UArray i Int64 -> [(Int, Int64)] -> UArray i Int64 Исходный код

unsafeAccum :: Ix i => (Int64 -> e' -> Int64) -> UArray i Int64 -> [(Int, e')] -> UArray i Int64 Исходный код

unsafeAccumArray :: Ix i => (Int64 -> e' -> Int64) -> Int64 -> (i, i) -> [(Int, e')] -> UArray i Int64 Исходный код

IArray UArray Int8 Исходный код
Подробности об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int8 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int8 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int8)] -> UArray i Int8 Исходный код

unsafeAt :: Ix i => UArray i Int8 -> Int -> Int8 Исходный код

unsafeReplace :: Ix i => UArray i Int8 -> [(Int, Int8)] -> UArray i Int8 Исходный код

unsafeAccum :: Ix i => (Int8 -> e' -> Int8) -> UArray i Int8 -> [(Int, e')] -> UArray i Int8 Исходный код

unsafeAccumArray :: Ix i => (Int8 -> e' -> Int8) -> Int8 -> (i, i) -> [(Int, e')] -> UArray i Int8 Исходный код

IArray UArray Word16 Исходный код
Подробности об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word16 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word16 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word16)] -> UArray i Word16 Исходный код

unsafeAt :: Ix i => UArray i Word16 -> Int -> Word16 Исходный код

unsafeReplace :: Ix i => UArray i Word16 -> [(Int, Word16)] -> UArray i Word16 Исходный код

unsafeAccum :: Ix i => (Word16 -> e' -> Word16) -> UArray i Word16 -> [(Int, e')] -> UArray i Word16 Исходный код

unsafeAccumArray :: Ix i => (Word16 -> e' -> Word16) -> Word16 -> (i, i) -> [(Int, e')] -> UArray i Word16 Исходный код

IArray UArray Word32 Исходный код
Подробности об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word32 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word32 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word32)] -> UArray i Word32 Исходный код

unsafeAt :: Ix i => UArray i Word32 -> Int -> Word32 Исходный код

unsafeReplace :: Ix i => UArray i Word32 -> [(Int, Word32)] -> UArray i Word32 Исходный код

unsafeAccum :: Ix i => (Word32 -> e' -> Word32) -> UArray i Word32 -> [(Int, e')] -> UArray i Word32 Исходный код

unsafeAccumArray :: Ix i => (Word32 -> e' -> Word32) -> Word32 -> (i, i) -> [(Int, e')] -> UArray i Word32 Исходный код

IArray UArray Word64 Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word64 -> (i, i) Источник

numElements :: Ix i => UArray i Word64 -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Word64)] -> UArray i Word64 Источник

unsafeAt :: Ix i => UArray i Word64 -> Int -> Word64 Источник

unsafeReplace :: Ix i => UArray i Word64 -> [(Int, Word64)] -> UArray i Word64 Источник

unsafeAccum :: Ix i => (Word64 -> e' -> Word64) -> UArray i Word64 -> [(Int, e')] -> UArray i Word64 Источник

unsafeAccumArray :: Ix i => (Word64 -> e' -> Word64) -> Word64 -> (i, i) -> [(Int, e')] -> UArray i Word64 Источник

IArray UArray Word8 Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word8 -> (i, i) Источник

numElements :: Ix i => UArray i Word8 -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Word8)] -> UArray i Word8 Источник

unsafeAt :: Ix i => UArray i Word8 -> Int -> Word8 Источник

unsafeReplace :: Ix i => UArray i Word8 -> [(Int, Word8)] -> UArray i Word8 Источник

unsafeAccum :: Ix i => (Word8 -> e' -> Word8) -> UArray i Word8 -> [(Int, e')] -> UArray i Word8 Источник

unsafeAccumArray :: Ix i => (Word8 -> e' -> Word8) -> Word8 -> (i, i) -> [(Int, e')] -> UArray i Word8 Источник

IArray UArray Bool Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Bool -> (i, i) Источник

numElements :: Ix i => UArray i Bool -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Bool)] -> UArray i Bool Источник

unsafeAt :: Ix i => UArray i Bool -> Int -> Bool Источник

unsafeReplace :: Ix i => UArray i Bool -> [(Int, Bool)] -> UArray i Bool Источник

unsafeAccum :: Ix i => (Bool -> e' -> Bool) -> UArray i Bool -> [(Int, e')] -> UArray i Bool Источник

unsafeAccumArray :: Ix i => (Bool -> e' -> Bool) -> Bool -> (i, i) -> [(Int, e')] -> UArray i Bool Источник

IArray UArray Char Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Char -> (i, i) Источник

numElements :: Ix i => UArray i Char -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Char)] -> UArray i Char Источник

unsafeAt :: Ix i => UArray i Char -> Int -> Char Источник

unsafeReplace :: Ix i => UArray i Char -> [(Int, Char)] -> UArray i Char Источник

unsafeAccum :: Ix i => (Char -> e' -> Char) -> UArray i Char -> [(Int, e')] -> UArray i Char Источник

unsafeAccumArray :: Ix i => (Char -> e' -> Char) -> Char -> (i, i) -> [(Int, e')] -> UArray i Char Источник

IArray UArray Double Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Double -> (i, i) Источник

numElements :: Ix i => UArray i Double -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Double)] -> UArray i Double Источник

unsafeAt :: Ix i => UArray i Double -> Int -> Double Источник

unsafeReplace :: Ix i => UArray i Double -> [(Int, Double)] -> UArray i Double Источник

unsafeAccum :: Ix i => (Double -> e' -> Double) -> UArray i Double -> [(Int, e')] -> UArray i Double Источник

unsafeAccumArray :: Ix i => (Double -> e' -> Double) -> Double -> (i, i) -> [(Int, e')] -> UArray i Double Источник

IArray UArray Float Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Float -> (i, i) Источник

numElements :: Ix i => UArray i Float -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Float)] -> UArray i Float Источник

unsafeAt :: Ix i => UArray i Float -> Int -> Float Источник

unsafeReplace :: Ix i => UArray i Float -> [(Int, Float)] -> UArray i Float Источник

unsafeAccum :: Ix i => (Float -> e' -> Float) -> UArray i Float -> [(Int, e')] -> UArray i Float Источник

unsafeAccumArray :: Ix i => (Float -> e' -> Float) -> Float -> (i, i) -> [(Int, e')] -> UArray i Float Источник

IArray UArray Int Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int -> (i, i) Исходный код

numElements :: Ix i => UArray i Int -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int)] -> UArray i Int Исходный код

unsafeAt :: Ix i => UArray i Int -> Int -> Int Исходный код

unsafeReplace :: Ix i => UArray i Int -> [(Int, Int)] -> UArray i Int Исходный код

unsafeAccum :: Ix i => (Int -> e' -> Int) -> UArray i Int -> [(Int, e')] -> UArray i Int Исходный код

unsafeAccumArray :: Ix i => (Int -> e' -> Int) -> Int -> (i, i) -> [(Int, e')] -> UArray i Int Исходный код

IArray UArray Word Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word -> (i, i) Исходный код

numElements :: Ix i => UArray i Word -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word)] -> UArray i Word Исходный код

unsafeAt :: Ix i => UArray i Word -> Int -> Word Исходный код

unsafeReplace :: Ix i => UArray i Word -> [(Int, Word)] -> UArray i Word Исходный код

unsafeAccum :: Ix i => (Word -> e' -> Word) -> UArray i Word -> [(Int, e')] -> UArray i Word Исходный код

unsafeAccumArray :: Ix i => (Word -> e' -> Word) -> Word -> (i, i) -> [(Int, e')] -> UArray i Word Исходный код

IArray Array e Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => Array i e -> (i, i) Исходный код

numElements :: Ix i => Array i e -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e Исходный код

unsafeAt :: Ix i => Array i e -> Int -> e Исходный код

unsafeReplace :: Ix i => Array i e -> [(Int, e)] -> Array i e Исходный код

unsafeAccum :: Ix i => (e -> e' -> e) -> Array i e -> [(Int, e')] -> Array i e Исходный код

unsafeAccumArray :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> Array i e Исходный код

IArray UArray (FunPtr a) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (FunPtr a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (FunPtr a) -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, FunPtr a)] -> UArray i (FunPtr a) Исходный код

unsafeAt :: Ix i => UArray i (FunPtr a) -> Int -> FunPtr a Исходный код

unsafeReplace :: Ix i => UArray i (FunPtr a) -> [(Int, FunPtr a)] -> UArray i (FunPtr a) Исходный код

unsafeAccum :: Ix i => (FunPtr a -> e' -> FunPtr a) -> UArray i (FunPtr a) -> [(Int, e')] -> UArray i (FunPtr a) Исходный код

unsafeAccumArray :: Ix i => (FunPtr a -> e' -> FunPtr a) -> FunPtr a -> (i, i) -> [(Int, e')] -> UArray i (FunPtr a) Исходный код

IArray UArray (Ptr a) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (Ptr a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (Ptr a) -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Ptr a)] -> UArray i (Ptr a) Исходный код

unsafeAt :: Ix i => UArray i (Ptr a) -> Int -> Ptr a Исходный код

unsafeReplace :: Ix i => UArray i (Ptr a) -> [(Int, Ptr a)] -> UArray i (Ptr a) Исходный код

unsafeAccum :: Ix i => (Ptr a -> e' -> Ptr a) -> UArray i (Ptr a) -> [(Int, e')] -> UArray i (Ptr a) Исходный код

unsafeAccumArray :: Ix i => (Ptr a -> e' -> Ptr a) -> Ptr a -> (i, i) -> [(Int, e')] -> UArray i (Ptr a) Исходный код

IArray UArray (StablePtr a) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (StablePtr a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (StablePtr a) -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, StablePtr a)] -> UArray i (StablePtr a) Исходный код

unsafeAt :: Ix i => UArray i (StablePtr a) -> Int -> StablePtr a Исходный код

unsafeReplace :: Ix i => UArray i (StablePtr a) -> [(Int, StablePtr a)] -> UArray i (StablePtr a) Исходный код

unsafeAccum :: Ix i => (StablePtr a -> e' -> StablePtr a) -> UArray i (StablePtr a) -> [(Int, e')] -> UArray i (StablePtr a) Исходный код

unsafeAccumArray :: Ix i => (StablePtr a -> e' -> StablePtr a) -> StablePtr a -> (i, i) -> [(Int, e')] -> UArray i (StablePtr a) Исходный код

safeRangeSize :: Ix i => (i, i) -> Int Исходный код

safeIndex :: Ix i => (i, i) -> Int -> i -> Int Исходный код

unsafeReplaceST :: (IArray a e, Ix i) => a i e -> [(Int, e)] -> ST s (STArray s i e) Источник

unsafeAccumST :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(Int, e')] -> ST s (STArray s i e) Источник

unsafeAccumArrayST :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> ST s (STArray s i e) Источник

array Источник

Аргументы

:: (IArray a e, Ix i)
=> (i, i)

границы массива: (наименьшая, наибольшая)

-> [(i, e)]

список ассоциаций

-> a i e

Создаёт неизменяемый массив по паре границ и списку начальных ассоциаций.

Границы задаются парой, состоящей соответственно из наименьшей и наибольшей границ массива. Например, вектор длины 10 с нумерацией от единицы имеет границы (1,10), а матрица 10 на 10 с нумерацией от единицы — границы ((1,1),(10,10)).

Ассоциация — это пара вида (i,x), которая задаёт значение массива по индексу i как x. Массив не определён, если какой-либо индекс в списке выходит за границы. Если в списке есть две ассоциации с одинаковым индексом, значение по этому индексу зависит от реализации. (В GHC используется последнее указанное значение для этого индекса. Другие реализации также поступают так для массивов без упаковки, однако Haskell 98 требует, чтобы для Array значением по таким индексам было bottom.)

Поскольку индексы необходимо проверять на наличие этих ошибок, array является строгой по аргументу границ и индексам списка ассоциаций. Строгой или нестрогой будет array по элементам, зависит от типа массива: Array — нестрогий тип массива, но все массивы UArray являются строгими. Поэтому в нестрогом массиве возможны такие рекуррентные определения:

a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i \<- [2..100]])

В списке ассоциаций необязательно должны присутствовать все индексы в границах массива, однако значения для отсутствующих индексов не определены.

Если в каком-либо измерении нижняя граница больше верхней, массив допустим, но пуст. Индексация пустого массива всегда вызывает ошибку выхода за границы, однако bounds по-прежнему возвращает границы, с которыми был создан массив.

listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e Источник

Создаёт неизменяемый массив из списка начальных элементов. Элементы массива задаются списком в порядке возрастания индексов, начиная с наименьшего индекса.

genArray :: (IArray a e, Ix i) => (i, i) -> (i -> e) -> a i e Источник

Создаёт неизменяемый массив с помощью функции-генератора.

Начиная с: array-0.5.6.0

listArrayST :: Ix i => (i, i) -> [e] -> ST s (STArray s i e) Источник

listUArrayST :: (MArray (STUArray s) e (ST s), Ix i) => (i, i) -> [e] -> ST s (STUArray s i e) Источник

type ListUArray e = forall i. Ix i => (i, i) -> [e] -> UArray i e Источник

(!) :: (IArray a e, Ix i) => a i e -> i -> e Источник

Возвращает элемент неизменяемого массива по указанному индексу или вызывает исключение, если индекс выходит за границы.

(!?) :: (IArray a e, Ix i) => a i e -> i -> Maybe e Источник

Возвращает Just элемент неизменяемого массива по указанному индексу или Nothing, если индекс выходит за границы.

Начиная с: array-0.5.6.0

indices :: (IArray a e, Ix i) => a i e -> [i] Источник

Возвращает список всех допустимых индексов массива.

elems :: (IArray a e, Ix i) => a i e -> [e] Источник

Возвращает список всех элементов массива в том же порядке, что и их индексы.

assocs :: (IArray a e, Ix i) => a i e -> [(i, e)] Источник

Возвращает содержимое массива в виде списка ассоциаций.

accumArray Источник

Аргументы

:: (IArray a e, Ix i)
=> (e -> e' -> e)

Функция накопления

-> e

Элемент по умолчанию

-> (i, i)

Границы массива

-> [(i, e')]

Список ассоциаций

-> a i e

Возвращает: массив

Создаёт неизменяемый массив из списка ассоциаций. В отличие от array, один и тот же индекс может встречаться в списке ассоциаций несколько раз; для объединения значений элементов с одинаковым индексом используется функция накопления.

Например, для заданного списка значений некоторого типа индексов функция 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]

(//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e Источник

Принимает массив и список пар и возвращает массив, идентичный левому аргументу, но обновлённый ассоциациями из правого аргумента. Например, если m — матрица n на n с нумерацией от единицы, то m//[((i,i), 0) | i <- [1..n]] — та же матрица, но с нулями на диагонали.

Как и для функции array, если в списке есть две ассоциации с одинаковым индексом, значение по этому индексу зависит от реализации. (В GHC используется последнее указанное значение для этого индекса. Другие реализации также поступают так для массивов без упаковки, однако Haskell 98 требует, чтобы для Array значением по таким индексам было bottom.)

Для большинства типов массивов сложность этой операции составляет O(n), где n — размер массива. Однако пакет diffarray предоставляет тип массива, для которого сложность этой операции линейна относительно количества обновлений.

accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(i, e')] -> a i e Источник

accum f принимает массив и список ассоциаций и накапливает пары из списка в массиве с помощью функции накопления f. Таким образом, accumArray можно определить с помощью accum:

accumArray f z b = accum f (array b [(i, z) | i \<- range b])

amap :: (IArray a e', IArray a e, Ix i) => (e' -> e) -> a i e' -> a i e Источник

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

ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e Источник

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

foldrArray :: (IArray a e, Ix i) => (e -> b -> b) -> b -> a i e -> b Источник

Ленивое правоассоциативное свёртывание.

Начиная с: array-0.5.8.0

foldlArray' :: (IArray a e, Ix i) => (b -> e -> b) -> b -> a i e -> b Источник

Строгое накапливающее левоассоциативное свёртывание.

Начиная с: array-0.5.8.0

foldlArray :: (IArray a e, Ix i) => (b -> e -> b) -> b -> a i e -> b Источник

Ленивое левоассоциативное свёртывание.

Начиная с: array-0.5.8.0

foldrArray' :: (IArray a e, Ix i) => (e -> b -> b) -> b -> a i e -> b Источник

Строгое накапливающее правоассоциативное свёртывание.

Начиная с: array-0.5.8.0

traverseArray_ :: (IArray a e, Ix i, Applicative f) => (e -> f b) -> a i e -> f () Источник

Преобразует элементы в аппликативные действия, выполняет их последовательно слева направо и отбрасывает результаты.

Начиная с: array-0.5.8.0

forArray_ :: (IArray a e, Ix i, Applicative f) => a i e -> (e -> f b) -> f () Источник

forArray_ — это traverseArray_ с переставленными аргументами.

Начиная с: array-0.5.8.0

foldlArrayM' :: (IArray a e, Ix i, Monad m) => (b -> e -> m b) -> b -> a i e -> m b Источник

Строгое накапливающее левоассоциативное монадическое свёртывание.

Начиная с: array-0.5.8.0

foldrArrayM' :: (IArray a e, Ix i, Monad m) => (e -> b -> m b) -> b -> a i e -> m b Источник

Строгое накапливающее правоассоциативное монадическое свёртывание.

Начиная с: array-0.5.8.0

data UArray i e Источник

Массивы с элементами без упаковки. Экземпляры IArray предоставляются для UArray с некоторыми типами элементов (Int, Float, Char и т. д.; полный список см. в классе UArray).

Как правило, UArray будет эффективнее (и по времени, и по памяти), чем соответствующий Array с тем же типом элементов. Однако UArray является строгим по элементам — поэтому не используйте UArray, если вам нужна нестрогость, обеспечиваемая Array.

Поскольку интерфейс IArray предоставляет операции, перегруженные по типу массива, достаточно изменить используемый программой тип массива, например с Array на UArray, чтобы воспользоваться преимуществами массивов без упаковки (не забудьте импортировать Data.Array.Unboxed вместо Data.Array).

Конструкторы

UArray !i !i !Int ByteArray#
Экземпляры
Подробности экземпляров
IArray UArray Int16 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int16 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int16 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int16)] -> UArray i Int16 Исходный код

unsafeAt :: Ix i => UArray i Int16 -> Int -> Int16 Исходный код

unsafeReplace :: Ix i => UArray i Int16 -> [(Int, Int16)] -> UArray i Int16 Исходный код

unsafeAccum :: Ix i => (Int16 -> e' -> Int16) -> UArray i Int16 -> [(Int, e')] -> UArray i Int16 Исходный код

unsafeAccumArray :: Ix i => (Int16 -> e' -> Int16) -> Int16 -> (i, i) -> [(Int, e')] -> UArray i Int16 Исходный код

IArray UArray Int32 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int32 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int32 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int32)] -> UArray i Int32 Исходный код

unsafeAt :: Ix i => UArray i Int32 -> Int -> Int32 Исходный код

unsafeReplace :: Ix i => UArray i Int32 -> [(Int, Int32)] -> UArray i Int32 Исходный код

unsafeAccum :: Ix i => (Int32 -> e' -> Int32) -> UArray i Int32 -> [(Int, e')] -> UArray i Int32 Исходный код

unsafeAccumArray :: Ix i => (Int32 -> e' -> Int32) -> Int32 -> (i, i) -> [(Int, e')] -> UArray i Int32 Исходный код

IArray UArray Int64 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int64 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int64 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int64)] -> UArray i Int64 Исходный код

unsafeAt :: Ix i => UArray i Int64 -> Int -> Int64 Исходный код

unsafeReplace :: Ix i => UArray i Int64 -> [(Int, Int64)] -> UArray i Int64 Исходный код

unsafeAccum :: Ix i => (Int64 -> e' -> Int64) -> UArray i Int64 -> [(Int, e')] -> UArray i Int64 Исходный код

unsafeAccumArray :: Ix i => (Int64 -> e' -> Int64) -> Int64 -> (i, i) -> [(Int, e')] -> UArray i Int64 Исходный код

IArray UArray Int8 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int8 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int8 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int8)] -> UArray i Int8 Исходный код

unsafeAt :: Ix i => UArray i Int8 -> Int -> Int8 Исходный код

unsafeReplace :: Ix i => UArray i Int8 -> [(Int, Int8)] -> UArray i Int8 Исходный код

unsafeAccum :: Ix i => (Int8 -> e' -> Int8) -> UArray i Int8 -> [(Int, e')] -> UArray i Int8 Исходный код

unsafeAccumArray :: Ix i => (Int8 -> e' -> Int8) -> Int8 -> (i, i) -> [(Int, e')] -> UArray i Int8 Исходный код

IArray UArray Word16 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word16 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word16 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word16)] -> UArray i Word16 Исходный код

unsafeAt :: Ix i => UArray i Word16 -> Int -> Word16 Исходный код

unsafeReplace :: Ix i => UArray i Word16 -> [(Int, Word16)] -> UArray i Word16 Исходный код

unsafeAccum :: Ix i => (Word16 -> e' -> Word16) -> UArray i Word16 -> [(Int, e')] -> UArray i Word16 Исходный код

unsafeAccumArray :: Ix i => (Word16 -> e' -> Word16) -> Word16 -> (i, i) -> [(Int, e')] -> UArray i Word16 Исходный код

IArray UArray Word32 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word32 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word32 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word32)] -> UArray i Word32 Исходный код

unsafeAt :: Ix i => UArray i Word32 -> Int -> Word32 Исходный код

unsafeReplace :: Ix i => UArray i Word32 -> [(Int, Word32)] -> UArray i Word32 Исходный код

unsafeAccum :: Ix i => (Word32 -> e' -> Word32) -> UArray i Word32 -> [(Int, e')] -> UArray i Word32 Исходный код

unsafeAccumArray :: Ix i => (Word32 -> e' -> Word32) -> Word32 -> (i, i) -> [(Int, e')] -> UArray i Word32 Исходный код

IArray UArray Word64 Источник
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word64 -> (i, i) Источник

numElements :: Ix i => UArray i Word64 -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Word64)] -> UArray i Word64 Источник

unsafeAt :: Ix i => UArray i Word64 -> Int -> Word64 Источник

unsafeReplace :: Ix i => UArray i Word64 -> [(Int, Word64)] -> UArray i Word64 Источник

unsafeAccum :: Ix i => (Word64 -> e' -> Word64) -> UArray i Word64 -> [(Int, e')] -> UArray i Word64 Источник

unsafeAccumArray :: Ix i => (Word64 -> e' -> Word64) -> Word64 -> (i, i) -> [(Int, e')] -> UArray i Word64 Источник

IArray UArray Word8 Источник
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word8 -> (i, i) Источник

numElements :: Ix i => UArray i Word8 -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Word8)] -> UArray i Word8 Источник

unsafeAt :: Ix i => UArray i Word8 -> Int -> Word8 Источник

unsafeReplace :: Ix i => UArray i Word8 -> [(Int, Word8)] -> UArray i Word8 Источник

unsafeAccum :: Ix i => (Word8 -> e' -> Word8) -> UArray i Word8 -> [(Int, e')] -> UArray i Word8 Источник

unsafeAccumArray :: Ix i => (Word8 -> e' -> Word8) -> Word8 -> (i, i) -> [(Int, e')] -> UArray i Word8 Источник

IArray UArray Bool Источник
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Bool -> (i, i) Источник

numElements :: Ix i => UArray i Bool -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Bool)] -> UArray i Bool Источник

unsafeAt :: Ix i => UArray i Bool -> Int -> Bool Источник

unsafeReplace :: Ix i => UArray i Bool -> [(Int, Bool)] -> UArray i Bool Источник

unsafeAccum :: Ix i => (Bool -> e' -> Bool) -> UArray i Bool -> [(Int, e')] -> UArray i Bool Источник

unsafeAccumArray :: Ix i => (Bool -> e' -> Bool) -> Bool -> (i, i) -> [(Int, e')] -> UArray i Bool Источник

IArray UArray Char Источник
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Char -> (i, i) Источник

numElements :: Ix i => UArray i Char -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Char)] -> UArray i Char Источник

unsafeAt :: Ix i => UArray i Char -> Int -> Char Источник

unsafeReplace :: Ix i => UArray i Char -> [(Int, Char)] -> UArray i Char Источник

unsafeAccum :: Ix i => (Char -> e' -> Char) -> UArray i Char -> [(Int, e')] -> UArray i Char Источник

unsafeAccumArray :: Ix i => (Char -> e' -> Char) -> Char -> (i, i) -> [(Int, e')] -> UArray i Char Источник

IArray UArray Double Источник
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Double -> (i, i) Источник

numElements :: Ix i => UArray i Double -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Double)] -> UArray i Double Источник

unsafeAt :: Ix i => UArray i Double -> Int -> Double Источник

unsafeReplace :: Ix i => UArray i Double -> [(Int, Double)] -> UArray i Double Источник

unsafeAccum :: Ix i => (Double -> e' -> Double) -> UArray i Double -> [(Int, e')] -> UArray i Double Источник

unsafeAccumArray :: Ix i => (Double -> e' -> Double) -> Double -> (i, i) -> [(Int, e')] -> UArray i Double Источник

IArray UArray Float Источник
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Float -> (i, i) Источник

numElements :: Ix i => UArray i Float -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Float)] -> UArray i Float Источник

unsafeAt :: Ix i => UArray i Float -> Int -> Float Источник

unsafeReplace :: Ix i => UArray i Float -> [(Int, Float)] -> UArray i Float Источник

unsafeAccum :: Ix i => (Float -> e' -> Float) -> UArray i Float -> [(Int, e')] -> UArray i Float Источник

unsafeAccumArray :: Ix i => (Float -> e' -> Float) -> Float -> (i, i) -> [(Int, e')] -> UArray i Float Источник

IArray UArray Int Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int -> (i, i) Исходный код

numElements :: Ix i => UArray i Int -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int)] -> UArray i Int Исходный код

unsafeAt :: Ix i => UArray i Int -> Int -> Int Исходный код

unsafeReplace :: Ix i => UArray i Int -> [(Int, Int)] -> UArray i Int Исходный код

unsafeAccum :: Ix i => (Int -> e' -> Int) -> UArray i Int -> [(Int, e')] -> UArray i Int Исходный код

unsafeAccumArray :: Ix i => (Int -> e' -> Int) -> Int -> (i, i) -> [(Int, e')] -> UArray i Int Исходный код

IArray UArray Word Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word -> (i, i) Исходный код

numElements :: Ix i => UArray i Word -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word)] -> UArray i Word Исходный код

unsafeAt :: Ix i => UArray i Word -> Int -> Word Исходный код

unsafeReplace :: Ix i => UArray i Word -> [(Int, Word)] -> UArray i Word Исходный код

unsafeAccum :: Ix i => (Word -> e' -> Word) -> UArray i Word -> [(Int, e')] -> UArray i Word Исходный код

unsafeAccumArray :: Ix i => (Word -> e' -> Word) -> Word -> (i, i) -> [(Int, e')] -> UArray i Word Исходный код

IArray UArray (FunPtr a) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (FunPtr a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (FunPtr a) -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, FunPtr a)] -> UArray i (FunPtr a) Исходный код

unsafeAt :: Ix i => UArray i (FunPtr a) -> Int -> FunPtr a Исходный код

unsafeReplace :: Ix i => UArray i (FunPtr a) -> [(Int, FunPtr a)] -> UArray i (FunPtr a) Исходный код

unsafeAccum :: Ix i => (FunPtr a -> e' -> FunPtr a) -> UArray i (FunPtr a) -> [(Int, e')] -> UArray i (FunPtr a) Исходный код

unsafeAccumArray :: Ix i => (FunPtr a -> e' -> FunPtr a) -> FunPtr a -> (i, i) -> [(Int, e')] -> UArray i (FunPtr a) Исходный код

IArray UArray (Ptr a) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (Ptr a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (Ptr a) -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Ptr a)] -> UArray i (Ptr a) Исходный код

unsafeAt :: Ix i => UArray i (Ptr a) -> Int -> Ptr a Исходный код

unsafeReplace :: Ix i => UArray i (Ptr a) -> [(Int, Ptr a)] -> UArray i (Ptr a) Исходный код

unsafeAccum :: Ix i => (Ptr a -> e' -> Ptr a) -> UArray i (Ptr a) -> [(Int, e')] -> UArray i (Ptr a) Исходный код

unsafeAccumArray :: Ix i => (Ptr a -> e' -> Ptr a) -> Ptr a -> (i, i) -> [(Int, e')] -> UArray i (Ptr a) Исходный код

IArray UArray (StablePtr a) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (StablePtr a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (StablePtr a) -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, StablePtr a)] -> UArray i (StablePtr a) Исходный код

unsafeAt :: Ix i => UArray i (StablePtr a) -> Int -> StablePtr a Исходный код

unsafeReplace :: Ix i => UArray i (StablePtr a) -> [(Int, StablePtr a)] -> UArray i (StablePtr a) Исходный код

unsafeAccum :: Ix i => (StablePtr a -> e' -> StablePtr a) -> UArray i (StablePtr a) -> [(Int, e')] -> UArray i (StablePtr a) Исходный код

unsafeAccumArray :: Ix i => (StablePtr a -> e' -> StablePtr a) -> StablePtr a -> (i, i) -> [(Int, e')] -> UArray i (StablePtr a) Исходный код

(Ix ix, Eq e, IArray UArray e) => Eq (UArray ix e) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

(==) :: UArray ix e -> UArray ix e -> Bool

(/=) :: UArray ix e -> UArray ix e -> Bool

(Ix ix, Ord e, IArray UArray e) => Ord (UArray ix e) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

compare :: UArray ix e -> UArray ix e -> Ordering

(<) :: UArray ix e -> UArray ix e -> Bool

(<=) :: UArray ix e -> UArray ix e -> Bool

(>) :: UArray ix e -> UArray ix e -> Bool

(>=) :: UArray ix e -> UArray ix e -> Bool

max :: UArray ix e -> UArray ix e -> UArray ix e

min :: UArray ix e -> UArray ix e -> UArray ix e

(Ix ix, Read ix, Read e, IArray UArray e) => Read (UArray ix e) Исходный код
Подробности экземпляра

Определён в Data.Array.Base

Методы

readsPrec :: Int -> ReadS (UArray ix e)

readList :: ReadS [UArray ix e]

readPrec :: ReadPrec (UArray ix e)

readListPrec :: ReadPrec [UArray ix e]

(Ix ix, Show ix, Show e, IArray UArray e) => Show (UArray ix e) Исходный код
Подробности экземпляра

Определён в Data.Array.Base

Методы

showsPrec :: Int -> UArray ix e -> ShowS

show :: UArray ix e -> String

showList :: [UArray ix e] -> ShowS

unsafeArrayUArray :: (MArray (STUArray s) e (ST s), Ix i) => (i, i) -> [(Int, e)] -> e -> ST s (UArray i e) Исходный код

unsafeFreezeSTUArray :: STUArray s i e -> ST s (UArray i e) Исходный код

unsafeReplaceUArray :: (MArray (STUArray s) e (ST s), Ix i) => UArray i e -> [(Int, e)] -> ST s (UArray i e) Исходный код

unsafeAccumUArray :: (MArray (STUArray s) e (ST s), Ix i) => (e -> e' -> e) -> UArray i e -> [(Int, e')] -> ST s (UArray i e) Исходный код

unsafeAccumArrayUArray :: (MArray (STUArray s) e (ST s), Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> ST s (UArray i e) Исходный код

eqUArray :: (IArray UArray e, Ix i, Eq e) => UArray i e -> UArray i e -> Bool Исходный код

cmpUArray :: (IArray UArray e, Ix i, Ord e) => UArray i e -> UArray i e -> Ordering Исходный код

cmpIntUArray :: (IArray UArray e, Ord e) => UArray Int e -> UArray Int e -> Ordering Исходный код

showsIArray :: (IArray a e, Ix i, Show i, Show e) => Int -> a i e -> ShowS Исходный код

readIArray :: (IArray a e, Ix i, Read i, Read e) => ReadPrec (a i e) Исходный код

nullStablePtr :: StablePtr a Исходный код

arrEleBottom :: a Исходный код

class Monad m => MArray (a :: Type -> Type -> Type) e (m :: Type -> Type) where Исходный код

Класс типов изменяемых массивов.

Тип массива имеет вид (a i e), где a — конструктор типа массива (вид * -> * -> *), i — тип индекса (принадлежащий классу типов Ix), а e — тип элемента.

Класс MArray параметризован как по a, так и по e (чтобы можно было определять экземпляры, специализированные для определённых типов элементов, как и для IArray), а также по типу монады m, в которой будут выполняться операции с изменяемым массивом.

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

getBounds, getNumElements, (newArray | unsafeNewArray_), unsafeRead, unsafeWrite

Методы

getBounds :: Ix i => a i e -> m (i, i) Исходный код

Возвращает границы массива (наименьший, наибольший).

getNumElements :: Ix i => a i e -> m Int Исходный код

Возвращает количество элементов в массиве.

newArray :: Ix i => (i, i) -> e -> m (a i e) Исходный код

Создаёт новый массив, инициализируя каждый элемент переданным значением. Первый и второй элементы кортежа задают соответственно наименьший и наибольший индексы.

newArray_ :: Ix i => (i, i) -> m (a i e) Исходный код

Создаёт новый массив, инициализируя каждый элемент неопределённым значением. В монадическом контексте, в котором операции должны быть детерминированными (например, в монаде ST), элементы массива инициализируются фиксированным, но неопределённым значением, например нулём. Первый и второй элементы кортежа задают соответственно наименьший и наибольший индексы.

unsafeNewArray_ :: Ix i => (i, i) -> m (a i e) Исходный код

Создаёт новый массив, инициализируя каждый элемент неопределённым значением. Первый и второй элементы кортежа задают соответственно наименьший и наибольший индексы.

unsafeRead :: Ix i => a i e -> Int -> m e Исходный код

unsafeWrite :: Ix i => a i e -> Int -> e -> m () Исходный код

Экземпляры
Сведения об экземплярах
MArray IOUArray Int16 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Int16 -> IO (i, i) Исходный код

getNumElements :: Ix i => IOUArray i Int16 -> IO Int Исходный код

newArray :: Ix i => (i, i) -> Int16 -> IO (IOUArray i Int16) Исходный код

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Int16) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Int16) Исходный код

unsafeRead :: Ix i => IOUArray i Int16 -> Int -> IO Int16 Исходный код

unsafeWrite :: Ix i => IOUArray i Int16 -> Int -> Int16 -> IO () Исходный код

MArray IOUArray Int32 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Int32 -> IO (i, i) Исходный код

getNumElements :: Ix i => IOUArray i Int32 -> IO Int Исходный код

newArray :: Ix i => (i, i) -> Int32 -> IO (IOUArray i Int32) Исходный код

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Int32) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Int32) Исходный код

unsafeRead :: Ix i => IOUArray i Int32 -> Int -> IO Int32 Исходный код

unsafeWrite :: Ix i => IOUArray i Int32 -> Int -> Int32 -> IO () Исходный код

MArray IOUArray Int64 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Int64 -> IO (i, i) Исходный код

getNumElements :: Ix i => IOUArray i Int64 -> IO Int Исходный код

newArray :: Ix i => (i, i) -> Int64 -> IO (IOUArray i Int64) Исходный код

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Int64) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Int64) Исходный код

unsafeRead :: Ix i => IOUArray i Int64 -> Int -> IO Int64 Исходный код

unsafeWrite :: Ix i => IOUArray i Int64 -> Int -> Int64 -> IO () Исходный код

MArray IOUArray Int8 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Int8 -> IO (i, i) Исходный код

getNumElements :: Ix i => IOUArray i Int8 -> IO Int Исходный код

newArray :: Ix i => (i, i) -> Int8 -> IO (IOUArray i Int8) Исходный код

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Int8) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Int8) Исходный код

unsafeRead :: Ix i => IOUArray i Int8 -> Int -> IO Int8 Исходный код

unsafeWrite :: Ix i => IOUArray i Int8 -> Int -> Int8 -> IO () Исходный код

MArray IOUArray Word16 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Word16 -> IO (i, i) Исходный код

getNumElements :: Ix i => IOUArray i Word16 -> IO Int Исходный код

newArray :: Ix i => (i, i) -> Word16 -> IO (IOUArray i Word16) Исходный код

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Word16) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Word16) Исходный код

unsafeRead :: Ix i => IOUArray i Word16 -> Int -> IO Word16 Исходный код

unsafeWrite :: Ix i => IOUArray i Word16 -> Int -> Word16 -> IO () Исходный код

MArray IOUArray Word32 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Word32 -> IO (i, i) Исходный код

getNumElements :: Ix i => IOUArray i Word32 -> IO Int Исходный код

newArray :: Ix i => (i, i) -> Word32 -> IO (IOUArray i Word32) Исходный код

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Word32) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Word32) Исходный код

unsafeRead :: Ix i => IOUArray i Word32 -> Int -> IO Word32 Исходный код

unsafeWrite :: Ix i => IOUArray i Word32 -> Int -> Word32 -> IO () Исходный код

MArray IOUArray Word64 IO Исходный код
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Word64 -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Word64 -> IO Int Источник

newArray :: Ix i => (i, i) -> Word64 -> IO (IOUArray i Word64) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Word64) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Word64) Источник

unsafeRead :: Ix i => IOUArray i Word64 -> Int -> IO Word64 Источник

unsafeWrite :: Ix i => IOUArray i Word64 -> Int -> Word64 -> IO () Источник

MArray IOUArray Word8 IO Источник
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Word8 -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Word8 -> IO Int Источник

newArray :: Ix i => (i, i) -> Word8 -> IO (IOUArray i Word8) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Word8) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Word8) Источник

unsafeRead :: Ix i => IOUArray i Word8 -> Int -> IO Word8 Источник

unsafeWrite :: Ix i => IOUArray i Word8 -> Int -> Word8 -> IO () Источник

MArray IOUArray Bool IO Источник
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Bool -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Bool -> IO Int Источник

newArray :: Ix i => (i, i) -> Bool -> IO (IOUArray i Bool) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Bool) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Bool) Источник

unsafeRead :: Ix i => IOUArray i Bool -> Int -> IO Bool Источник

unsafeWrite :: Ix i => IOUArray i Bool -> Int -> Bool -> IO () Источник

MArray IOUArray Char IO Источник
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Char -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Char -> IO Int Источник

newArray :: Ix i => (i, i) -> Char -> IO (IOUArray i Char) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Char) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Char) Источник

unsafeRead :: Ix i => IOUArray i Char -> Int -> IO Char Источник

unsafeWrite :: Ix i => IOUArray i Char -> Int -> Char -> IO () Источник

MArray IOUArray Double IO Источник
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Double -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Double -> IO Int Источник

newArray :: Ix i => (i, i) -> Double -> IO (IOUArray i Double) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Double) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Double) Источник

unsafeRead :: Ix i => IOUArray i Double -> Int -> IO Double Источник

unsafeWrite :: Ix i => IOUArray i Double -> Int -> Double -> IO () Источник

MArray IOUArray Float IO Источник
Сведения об экземпляре

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Float -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Float -> IO Int Источник

newArray :: Ix i => (i, i) -> Float -> IO (IOUArray i Float) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Float) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Float) Источник

unsafeRead :: Ix i => IOUArray i Float -> Int -> IO Float Источник

unsafeWrite :: Ix i => IOUArray i Float -> Int -> Float -> IO () Источник

MArray IOUArray Int IO Источник
Подробности экземпляра

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Int -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Int -> IO Int Источник

newArray :: Ix i => (i, i) -> Int -> IO (IOUArray i Int) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Int) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Int) Источник

unsafeRead :: Ix i => IOUArray i Int -> Int -> IO Int Источник

unsafeWrite :: Ix i => IOUArray i Int -> Int -> Int -> IO () Источник

MArray IOUArray Word IO Источник
Подробности экземпляра

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i Word -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i Word -> IO Int Источник

newArray :: Ix i => (i, i) -> Word -> IO (IOUArray i Word) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i Word) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i Word) Источник

unsafeRead :: Ix i => IOUArray i Word -> Int -> IO Word Источник

unsafeWrite :: Ix i => IOUArray i Word -> Int -> Word -> IO () Источник

Storable e => MArray StorableArray e IO Источник
Подробности экземпляра

Определено в Data.Array.Storable.Internals

Методы

getBounds :: Ix i => StorableArray i e -> IO (i, i) Источник

getNumElements :: Ix i => StorableArray i e -> IO Int Источник

newArray :: Ix i => (i, i) -> e -> IO (StorableArray i e) Источник

newArray_ :: Ix i => (i, i) -> IO (StorableArray i e) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (StorableArray i e) Источник

unsafeRead :: Ix i => StorableArray i e -> Int -> IO e Источник

unsafeWrite :: Ix i => StorableArray i e -> Int -> e -> IO () Источник

MArray IOArray e IO Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => IOArray i e -> IO (i, i) Источник

getNumElements :: Ix i => IOArray i e -> IO Int Источник

newArray :: Ix i => (i, i) -> e -> IO (IOArray i e) Источник

newArray_ :: Ix i => (i, i) -> IO (IOArray i e) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOArray i e) Источник

unsafeRead :: Ix i => IOArray i e -> Int -> IO e Источник

unsafeWrite :: Ix i => IOArray i e -> Int -> e -> IO () Источник

MArray IOUArray (FunPtr a) IO Источник
Подробности экземпляра

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i (FunPtr a) -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i (FunPtr a) -> IO Int Источник

newArray :: Ix i => (i, i) -> FunPtr a -> IO (IOUArray i (FunPtr a)) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i (FunPtr a)) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i (FunPtr a)) Источник

unsafeRead :: Ix i => IOUArray i (FunPtr a) -> Int -> IO (FunPtr a) Источник

unsafeWrite :: Ix i => IOUArray i (FunPtr a) -> Int -> FunPtr a -> IO () Источник

MArray IOUArray (Ptr a) IO Источник
Подробности экземпляра

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i (Ptr a) -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i (Ptr a) -> IO Int Источник

newArray :: Ix i => (i, i) -> Ptr a -> IO (IOUArray i (Ptr a)) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i (Ptr a)) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i (Ptr a)) Источник

unsafeRead :: Ix i => IOUArray i (Ptr a) -> Int -> IO (Ptr a) Источник

unsafeWrite :: Ix i => IOUArray i (Ptr a) -> Int -> Ptr a -> IO () Источник

MArray IOUArray (StablePtr a) IO Источник
Подробное описание экземпляра

Определено в Data.Array.IO.Internals

Методы

getBounds :: Ix i => IOUArray i (StablePtr a) -> IO (i, i) Источник

getNumElements :: Ix i => IOUArray i (StablePtr a) -> IO Int Источник

newArray :: Ix i => (i, i) -> StablePtr a -> IO (IOUArray i (StablePtr a)) Источник

newArray_ :: Ix i => (i, i) -> IO (IOUArray i (StablePtr a)) Источник

unsafeNewArray_ :: Ix i => (i, i) -> IO (IOUArray i (StablePtr a)) Источник

unsafeRead :: Ix i => IOUArray i (StablePtr a) -> Int -> IO (StablePtr a) Источник

unsafeWrite :: Ix i => IOUArray i (StablePtr a) -> Int -> StablePtr a -> IO () Источник

MArray (STUArray s) Int16 (ST s) Источник
Подробное описание экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int16 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Int16 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Int16 -> ST s (STUArray s i Int16) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int16) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int16) Источник

unsafeRead :: Ix i => STUArray s i Int16 -> Int -> ST s Int16 Источник

unsafeWrite :: Ix i => STUArray s i Int16 -> Int -> Int16 -> ST s () Источник

MArray (STUArray s) Int32 (ST s) Источник
Подробное описание экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int32 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Int32 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Int32 -> ST s (STUArray s i Int32) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int32) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int32) Источник

unsafeRead :: Ix i => STUArray s i Int32 -> Int -> ST s Int32 Источник

unsafeWrite :: Ix i => STUArray s i Int32 -> Int -> Int32 -> ST s () Источник

MArray (STUArray s) Int64 (ST s) Источник
Подробное описание экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int64 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Int64 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Int64 -> ST s (STUArray s i Int64) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int64) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int64) Источник

unsafeRead :: Ix i => STUArray s i Int64 -> Int -> ST s Int64 Источник

unsafeWrite :: Ix i => STUArray s i Int64 -> Int -> Int64 -> ST s () Источник

MArray (STUArray s) Int8 (ST s) Источник
Подробное описание экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int8 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Int8 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Int8 -> ST s (STUArray s i Int8) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int8) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int8) Источник

unsafeRead :: Ix i => STUArray s i Int8 -> Int -> ST s Int8 Источник

unsafeWrite :: Ix i => STUArray s i Int8 -> Int -> Int8 -> ST s () Источник

MArray (STUArray s) Word16 (ST s) Источник
Подробное описание экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word16 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Word16 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Word16 -> ST s (STUArray s i Word16) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word16) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word16) Источник

unsafeRead :: Ix i => STUArray s i Word16 -> Int -> ST s Word16 Источник

unsafeWrite :: Ix i => STUArray s i Word16 -> Int -> Word16 -> ST s () Источник

MArray (STUArray s) Word32 (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word32 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Word32 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Word32 -> ST s (STUArray s i Word32) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word32) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word32) Источник

unsafeRead :: Ix i => STUArray s i Word32 -> Int -> ST s Word32 Источник

unsafeWrite :: Ix i => STUArray s i Word32 -> Int -> Word32 -> ST s () Источник

MArray (STUArray s) Word64 (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word64 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Word64 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Word64 -> ST s (STUArray s i Word64) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word64) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word64) Источник

unsafeRead :: Ix i => STUArray s i Word64 -> Int -> ST s Word64 Источник

unsafeWrite :: Ix i => STUArray s i Word64 -> Int -> Word64 -> ST s () Источник

MArray (STUArray s) Word8 (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word8 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Word8 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Word8 -> ST s (STUArray s i Word8) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word8) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word8) Источник

unsafeRead :: Ix i => STUArray s i Word8 -> Int -> ST s Word8 Источник

unsafeWrite :: Ix i => STUArray s i Word8 -> Int -> Word8 -> ST s () Источник

MArray (STUArray s) Bool (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Bool -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Bool -> ST s Int Источник

newArray :: Ix i => (i, i) -> Bool -> ST s (STUArray s i Bool) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Bool) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Bool) Источник

unsafeRead :: Ix i => STUArray s i Bool -> Int -> ST s Bool Источник

unsafeWrite :: Ix i => STUArray s i Bool -> Int -> Bool -> ST s () Источник

MArray (STUArray s) Char (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Char -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Char -> ST s Int Источник

newArray :: Ix i => (i, i) -> Char -> ST s (STUArray s i Char) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Char) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Char) Источник

unsafeRead :: Ix i => STUArray s i Char -> Int -> ST s Char Источник

unsafeWrite :: Ix i => STUArray s i Char -> Int -> Char -> ST s () Источник

MArray (STUArray s) Double (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Double -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Double -> ST s Int Источник

newArray :: Ix i => (i, i) -> Double -> ST s (STUArray s i Double) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Double) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Double) Источник

unsafeRead :: Ix i => STUArray s i Double -> Int -> ST s Double Источник

unsafeWrite :: Ix i => STUArray s i Double -> Int -> Double -> ST s () Источник

MArray (STUArray s) Float (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Float -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Float -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Float -> ST s (STUArray s i Float) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Float) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Float) Исходный код

unsafeRead :: Ix i => STUArray s i Float -> Int -> ST s Float Исходный код

unsafeWrite :: Ix i => STUArray s i Float -> Int -> Float -> ST s () Исходный код

MArray (STUArray s) Int (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Int -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Int -> ST s (STUArray s i Int) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int) Исходный код

unsafeRead :: Ix i => STUArray s i Int -> Int -> ST s Int Исходный код

unsafeWrite :: Ix i => STUArray s i Int -> Int -> Int -> ST s () Исходный код

MArray (STUArray s) Word (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Word -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Word -> ST s (STUArray s i Word) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word) Исходный код

unsafeRead :: Ix i => STUArray s i Word -> Int -> ST s Word Исходный код

unsafeWrite :: Ix i => STUArray s i Word -> Int -> Word -> ST s () Исходный код

MArray (STArray s) e (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STArray s i e -> ST s (i, i) Исходный код

getNumElements :: Ix i => STArray s i e -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Исходный код

unsafeRead :: Ix i => STArray s i e -> Int -> ST s e Исходный код

unsafeWrite :: Ix i => STArray s i e -> Int -> e -> ST s () Исходный код

MArray (STArray s) e (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STArray s i e -> ST s (i, i) Исходный код

getNumElements :: Ix i => STArray s i e -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Исходный код

unsafeRead :: Ix i => STArray s i e -> Int -> ST s e Исходный код

unsafeWrite :: Ix i => STArray s i e -> Int -> e -> ST s () Исходный код

MArray (STUArray s) (FunPtr a) (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i (FunPtr a) -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i (FunPtr a) -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> FunPtr a -> ST s (STUArray s i (FunPtr a)) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i (FunPtr a)) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i (FunPtr a)) Исходный код

unsafeRead :: Ix i => STUArray s i (FunPtr a) -> Int -> ST s (FunPtr a) Исходный код

unsafeWrite :: Ix i => STUArray s i (FunPtr a) -> Int -> FunPtr a -> ST s () Исходный код

MArray (STUArray s) (Ptr a) (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i (Ptr a) -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i (Ptr a) -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Ptr a -> ST s (STUArray s i (Ptr a)) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i (Ptr a)) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i (Ptr a)) Исходный код

unsafeRead :: Ix i => STUArray s i (Ptr a) -> Int -> ST s (Ptr a) Исходный код

unsafeWrite :: Ix i => STUArray s i (Ptr a) -> Int -> Ptr a -> ST s () Исходный код

MArray (STUArray s) (StablePtr a) (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i (StablePtr a) -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i (StablePtr a) -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> StablePtr a -> ST s (STUArray s i (StablePtr a)) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i (StablePtr a)) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i (StablePtr a)) Исходный код

unsafeRead :: Ix i => STUArray s i (StablePtr a) -> Int -> ST s (StablePtr a) Исходный код

unsafeWrite :: Ix i => STUArray s i (StablePtr a) -> Int -> StablePtr a -> ST s () Исходный код

newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e) Исходный код

Создаёт изменяемый массив из списка начальных элементов. Список задаёт элементы массива в порядке возрастания, начиная с наименьшего индекса. Первый и второй элементы кортежа задают соответственно наименьший и наибольший индексы.

newGenArray :: (MArray a e m, Ix i) => (i, i) -> (i -> m e) -> m (a i e) Исходный код

Создаёт изменяемый массив с помощью функции-генератора. Вызывает функцию-генератор в порядке возрастания индексов.

Начиная с: array-0.5.6.0

readArray :: (MArray a e m, Ix i) => a i e -> i -> m e Исходный код

Считывает элемент из изменяемого массива

writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m () Исходный код

Записывает элемент в изменяемый массив

modifyArray :: (MArray a e m, Ix i) => a i e -> i -> (e -> e) -> m () Исходный код

Изменяет элемент в изменяемом массиве

Начиная с: array-0.5.6.0

modifyArray' :: (MArray a e m, Ix i) => a i e -> i -> (e -> e) -> m () Исходный код

Изменяет элемент в изменяемом массиве. Записываемый элемент вычисляется строго.

Начиная с: array-0.5.6.0

getElems :: (MArray a e m, Ix i) => a i e -> m [e] Исходный код

Возвращает список всех элементов изменяемого массива

getAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)] Исходный код

Возвращает список всех пар «индекс — значение» изменяемого массива в порядке индексов.

mapArray :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e) Исходный код

Создаёт новый массив на основе исходного, применяя функцию к каждому элементу.

mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> m (a i e) Исходный код

Создаёт новый массив на основе исходного, применяя функцию к каждому индексу.

foldlMArray' :: (MArray a e m, Ix i) => (b -> e -> b) -> b -> a i e -> m b Исходный код

Строгое левоассоциативное свёртывание с накапливаемым значением.

Начиная с: array-0.5.8.0

foldrMArray' :: (MArray a e m, Ix i) => (e -> b -> b) -> b -> a i e -> m b Исходный код

Строгое правоассоциативное свёртывание с накапливаемым значением.

Начиная с: array-0.5.8.0

foldlMArrayM' :: (MArray a e m, Ix i) => (b -> e -> m b) -> b -> a i e -> m b Исходный код

Строгое левоассоциативное монадическое свёртывание с накапливаемым значением.

Начиная с: array-0.5.8.0

foldrMArrayM' :: (MArray a e m, Ix i) => (e -> b -> m b) -> b -> a i e -> m b Исходный код

Строгое правоассоциативное монадическое свёртывание с накапливаемым значением.

Начиная с: array-0.5.8.0

mapMArrayM_ :: (MArray a e m, Ix i) => (e -> m b) -> a i e -> m () Исходный код

Преобразует элементы в монадические действия, выполняет их слева направо и отбрасывает результаты.

Начиная с: array-0.5.8.0

forMArrayM_ :: (MArray a e m, Ix i) => a i e -> (e -> m b) -> m () Исходный код

forMArrayM_ — это mapMArrayM_ с аргументами в обратном порядке.

Начиная с: array-0.5.8.0

data STUArray s i e Исходный код

Изменяемый массив с неупакованными элементами, которым можно манипулировать в монаде ST. Аргументы типа имеют следующее назначение:

  • s: аргумент-переменная состояния для типа ST
  • i: тип индекса массива (должен быть экземпляром Ix)
  • e: тип элементов массива. Поддерживаются только некоторые типы элементов.

STUArray обычно эффективнее (как по времени, так и по памяти), чем эквивалентный упакованный вариант (STArray) с тем же типом элементов. Однако STUArray строго вычисляет свои элементы — поэтому не используйте STUArray, если вам нужна нестрогость, обеспечиваемая STArray.

Конструкторы

STUArray !i !i !Int (MutableByteArray# s)
Экземпляры
Сведения об экземплярах
MArray (STUArray s) Int16 (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int16 -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Int16 -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Int16 -> ST s (STUArray s i Int16) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int16) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int16) Исходный код

unsafeRead :: Ix i => STUArray s i Int16 -> Int -> ST s Int16 Исходный код

unsafeWrite :: Ix i => STUArray s i Int16 -> Int -> Int16 -> ST s () Исходный код

MArray (STUArray s) Int32 (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int32 -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Int32 -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Int32 -> ST s (STUArray s i Int32) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int32) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int32) Исходный код

unsafeRead :: Ix i => STUArray s i Int32 -> Int -> ST s Int32 Исходный код

unsafeWrite :: Ix i => STUArray s i Int32 -> Int -> Int32 -> ST s () Исходный код

MArray (STUArray s) Int64 (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int64 -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Int64 -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Int64 -> ST s (STUArray s i Int64) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int64) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int64) Исходный код

unsafeRead :: Ix i => STUArray s i Int64 -> Int -> ST s Int64 Исходный код

unsafeWrite :: Ix i => STUArray s i Int64 -> Int -> Int64 -> ST s () Исходный код

MArray (STUArray s) Int8 (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int8 -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Int8 -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Int8 -> ST s (STUArray s i Int8) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int8) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int8) Исходный код

unsafeRead :: Ix i => STUArray s i Int8 -> Int -> ST s Int8 Исходный код

unsafeWrite :: Ix i => STUArray s i Int8 -> Int -> Int8 -> ST s () Исходный код

MArray (STUArray s) Word16 (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word16 -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Word16 -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Word16 -> ST s (STUArray s i Word16) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word16) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word16) Исходный код

unsafeRead :: Ix i => STUArray s i Word16 -> Int -> ST s Word16 Исходный код

unsafeWrite :: Ix i => STUArray s i Word16 -> Int -> Word16 -> ST s () Исходный код

MArray (STUArray s) Word32 (ST s) Исходный код
Сведения об экземпляре

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word32 -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Word32 -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Word32 -> ST s (STUArray s i Word32) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word32) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word32) Исходный код

unsafeRead :: Ix i => STUArray s i Word32 -> Int -> ST s Word32 Исходный код

unsafeWrite :: Ix i => STUArray s i Word32 -> Int -> Word32 -> ST s () Исходный код

MArray (STUArray s) Word64 (ST s) Исходный код
Подробности экземпляра

Определён в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word64 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Word64 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Word64 -> ST s (STUArray s i Word64) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word64) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word64) Источник

unsafeRead :: Ix i => STUArray s i Word64 -> Int -> ST s Word64 Источник

unsafeWrite :: Ix i => STUArray s i Word64 -> Int -> Word64 -> ST s () Источник

MArray (STUArray s) Word8 (ST s) Источник
Подробности экземпляра

Определён в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word8 -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Word8 -> ST s Int Источник

newArray :: Ix i => (i, i) -> Word8 -> ST s (STUArray s i Word8) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word8) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word8) Источник

unsafeRead :: Ix i => STUArray s i Word8 -> Int -> ST s Word8 Источник

unsafeWrite :: Ix i => STUArray s i Word8 -> Int -> Word8 -> ST s () Источник

MArray (STUArray s) Bool (ST s) Источник
Подробности экземпляра

Определён в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Bool -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Bool -> ST s Int Источник

newArray :: Ix i => (i, i) -> Bool -> ST s (STUArray s i Bool) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Bool) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Bool) Источник

unsafeRead :: Ix i => STUArray s i Bool -> Int -> ST s Bool Источник

unsafeWrite :: Ix i => STUArray s i Bool -> Int -> Bool -> ST s () Источник

MArray (STUArray s) Char (ST s) Источник
Подробности экземпляра

Определён в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Char -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Char -> ST s Int Источник

newArray :: Ix i => (i, i) -> Char -> ST s (STUArray s i Char) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Char) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Char) Источник

unsafeRead :: Ix i => STUArray s i Char -> Int -> ST s Char Источник

unsafeWrite :: Ix i => STUArray s i Char -> Int -> Char -> ST s () Источник

MArray (STUArray s) Double (ST s) Источник
Подробности экземпляра

Определён в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Double -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Double -> ST s Int Источник

newArray :: Ix i => (i, i) -> Double -> ST s (STUArray s i Double) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Double) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Double) Источник

unsafeRead :: Ix i => STUArray s i Double -> Int -> ST s Double Источник

unsafeWrite :: Ix i => STUArray s i Double -> Int -> Double -> ST s () Источник

MArray (STUArray s) Float (ST s) Источник
Подробности экземпляра

Определён в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Float -> ST s (i, i) Источник

getNumElements :: Ix i => STUArray s i Float -> ST s Int Источник

newArray :: Ix i => (i, i) -> Float -> ST s (STUArray s i Float) Источник

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Float) Источник

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Float) Источник

unsafeRead :: Ix i => STUArray s i Float -> Int -> ST s Float Источник

unsafeWrite :: Ix i => STUArray s i Float -> Int -> Float -> ST s () Источник

MArray (STUArray s) Int (ST s) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Int -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Int -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Int -> ST s (STUArray s i Int) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Int) Исходный код

unsafeRead :: Ix i => STUArray s i Int -> Int -> ST s Int Исходный код

unsafeWrite :: Ix i => STUArray s i Int -> Int -> Int -> ST s () Исходный код

MArray (STUArray s) Word (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i Word -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i Word -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Word -> ST s (STUArray s i Word) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Word) Исходный код

unsafeRead :: Ix i => STUArray s i Word -> Int -> ST s Word Исходный код

unsafeWrite :: Ix i => STUArray s i Word -> Int -> Word -> ST s () Исходный код

MArray (STUArray s) (FunPtr a) (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i (FunPtr a) -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i (FunPtr a) -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> FunPtr a -> ST s (STUArray s i (FunPtr a)) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i (FunPtr a)) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i (FunPtr a)) Исходный код

unsafeRead :: Ix i => STUArray s i (FunPtr a) -> Int -> ST s (FunPtr a) Исходный код

unsafeWrite :: Ix i => STUArray s i (FunPtr a) -> Int -> FunPtr a -> ST s () Исходный код

MArray (STUArray s) (Ptr a) (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i (Ptr a) -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i (Ptr a) -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> Ptr a -> ST s (STUArray s i (Ptr a)) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i (Ptr a)) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i (Ptr a)) Исходный код

unsafeRead :: Ix i => STUArray s i (Ptr a) -> Int -> ST s (Ptr a) Исходный код

unsafeWrite :: Ix i => STUArray s i (Ptr a) -> Int -> Ptr a -> ST s () Исходный код

MArray (STUArray s) (StablePtr a) (ST s) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

getBounds :: Ix i => STUArray s i (StablePtr a) -> ST s (i, i) Исходный код

getNumElements :: Ix i => STUArray s i (StablePtr a) -> ST s Int Исходный код

newArray :: Ix i => (i, i) -> StablePtr a -> ST s (STUArray s i (StablePtr a)) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i (StablePtr a)) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i (StablePtr a)) Исходный код

unsafeRead :: Ix i => STUArray s i (StablePtr a) -> Int -> ST s (StablePtr a) Исходный код

unsafeWrite :: Ix i => STUArray s i (StablePtr a) -> Int -> StablePtr a -> ST s () Исходный код

Eq (STUArray s i e) Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

(==) :: STUArray s i e -> STUArray s i e -> Bool

(/=) :: STUArray s i e -> STUArray s i e -> Bool

unsafeNewArraySTUArray_ :: Ix i => (i, i) -> (Int# -> Int#) -> ST s (STUArray s i e) Исходный код

bOOL_SCALE :: Int# -> Int# Исходный код

wORD_SCALE :: Int# -> Int# Исходный код

dOUBLE_SCALE :: Int# -> Int# Исходный код

fLOAT_SCALE :: Int# -> Int# Исходный код

safe_scale :: Int# -> Int# -> Int# Исходный код

bOOL_INDEX :: Int# -> Int# Исходный код

Индекс слова, в которое попадают заданные элементы массива Bool.

bOOL_BIT :: Int# -> Word# Исходный код

bOOL_NOT_BIT :: Int# -> Word# Исходный код

freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e) Исходный код

Преобразует изменяемый массив (любой экземпляр MArray) в неизменяемый массив (любой экземпляр IArray), создавая его полную копию.

freezeSTUArray :: STUArray s i e -> ST s (UArray i e) Исходный код

memcpy_freeze :: MutableByteArray# s -> MutableByteArray# s -> CSize -> IO (Ptr a) Источник

unsafeFreeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e) Источник

Преобразует изменяемый массив в неизменяемый. Реализация может просто привести массив от одного типа к другому без копирования или создать полную копию массива.

Обратите внимание: поскольку массив может быть не скопирован, любые последующие изменения изменяемой версии массива могут быть также видны в неизменяемой версии. Поэтому использовать эту функцию безопасно, если изменяемая версия больше не изменяется после замораживания.

Реализация без копирования поддерживается только для некоторых пар типов массивов; одно из условий состоит в том, что типы массивов должны иметь одинаковое представление. В GHC следующие пары типов массивов имеют реализацию unsafeFreeze без копирования с асимптотикой O(1). Поскольку оптимизированные версии включаются с помощью специализаций, для их получения необходимо скомпилировать код с оптимизацией (-O).

  • IOUArray -> UArray
  • STUArray -> UArray
  • IOArray -> Array
  • STArray -> Array

thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e) Источник

Преобразует неизменяемый массив (любой экземпляр IArray) в изменяемый массив (любой экземпляр MArray), создавая его полную копию.

thawSTUArray :: UArray i e -> ST s (STUArray s i e) Источник

memcpy_thaw :: MutableByteArray# s -> ByteArray# -> CSize -> IO (Ptr a) Источник

unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e) Источник

Преобразует неизменяемый массив в изменяемый. Реализация может просто привести массив от одного типа к другому без копирования или создать полную копию массива.

Обратите внимание: поскольку массив может быть не скопирован, любые последующие изменения изменяемой версии массива могут быть также видны в неизменяемой версии. Поэтому использовать эту функцию безопасно, только если в этом потоке к неизменяемому массиву больше никогда не будут обращаться и отсутствует вероятность обращения к нему из другого потока. Если в многопоточной среде вы используете последовательность unsafeThawwriteunsafeFreeze, необходимо обеспечить её атомарность по отношению к другим потокам, иначе может произойти сбой сборщика мусора (поскольку запись может выполняться в замороженный массив).

Реализация без копирования поддерживается только для некоторых пар типов массивов; одно из условий состоит в том, что типы массивов должны иметь одинаковое представление. В GHC следующие пары типов массивов имеют реализацию unsafeThaw без копирования с асимптотикой O(1). Поскольку оптимизированные версии включаются с помощью специализаций, для их получения необходимо скомпилировать код с оптимизацией (-O).

  • UArray -> IOUArray
  • UArray -> STUArray
  • Array -> IOArray
  • Array -> STArray

unsafeThawSTUArray :: UArray i e -> ST s (STUArray s i e) Источник

unsafeThawIOArray :: Array ix e -> IO (IOArray ix e) Источник

thawIOArray :: Array ix e -> IO (IOArray ix e) Источник

freezeIOArray :: IOArray ix e -> IO (Array ix e) Источник

unsafeFreezeIOArray :: IOArray ix e -> IO (Array ix e) Источник

castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b) Источник

Преобразует STUArray с одним типом элементов в массив с другим типом элементов. Все элементы результирующего массива не определены (если только вы не знаете, что делаете...).

© 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/array-0.5.8.0-93e8/Data-Array-Base.html

Spec-Zone.ru

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