Spec-Zone.ru › Haskell 9

Data.Array.Base

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка libraries@haskell.org
Устойчивость экспериментальная
Переносимость непереносимая (MPTCs, использует Control.Monad.ST)
Safe Haskell Нет
Язык Haskell2010

Описание

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

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

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

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

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

Авторы, импортирующие этот модуль, должны тщательно отслеживать развитие.

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

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

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

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

bounds, numElements, unsafeArray, unsafeAt

Методы

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

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

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

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

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

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

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

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

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

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

Методы

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

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

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

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

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

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

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

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

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

Методы

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

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

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

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

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

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

unsafeAccumArray :: Ix i => (Int32 -> e' -> Int32) -> Int32 -> (i, i) -> [(Целое, 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 -> Целое Исходный код

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

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

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

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

unsafeAccumArray :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Целое, 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) -> Целое Исходный код

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

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

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

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

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

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

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

Методы

bounds :: Ix i => UArray i (Указатель a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (Указатель a) -> Целое Исходный код

unsafeArray :: Ix i => (i, i) -> [(Целое, Указатель a)] -> UArray i (Указатель a) Исходный код

unsafeAt :: Ix i => UArray i (Указатель a) -> Целое -> Указатель a Исходный код

unsafeReplace :: Ix i => UArray i (Указатель a) -> [(Целое, Указатель a)] -> UArray i (Указатель a) Исходный код

unsafeAccum :: Ix i => (Указатель a -> e' -> Указатель a) -> UArray i (Указатель a) -> [(Целое, e')] -> UArray i (Указатель a) Исходный код

unsafeAccumArray :: Ix i => (Указатель a -> e' -> Указатель a) -> Указатель a -> (i, i) -> [(Целое, e')] -> UArray i (Указатель a) Исходный код

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

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

Методы

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

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

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

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

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

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

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

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

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

unsafeReplaceST :: (IArray a e, Ix i) => a i e -> [(Int, e)] -> ST s (STArray s i e) Source

unsafeAccumST :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(Int, e')] -> ST s (STArray s i e) Source

unsafeAccumArrayST :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> ST s (STArray s i e) Source

array Source

Аргументы

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

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

-> [(i, e)]

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

-> a i e

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

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

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

Поскольку индексы должны быть проверены на эти ошибки, 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 Source

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

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

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

С: array-0.5.6.0

listArrayST :: Ix i => (i, i) -> [e] -> ST s (STArray s i e) Source

listUArrayST :: (MArray (STUArray s) e (ST s), Ix i) => (i, i) -> [e] -> ST s (STUArray s i e) Source

type ListUArray e = forall i. Ix i => (i, i) -> [e] -> UArray i e Source

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

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

(!?) :: (IArray a e, Ix i) => a i e -> i -> Maybe e Source

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

С: array-0.5.6.0

indices :: (IArray a e, Ix i) => a i e -> [i] Source

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

elems :: (IArray a e, Ix i) => a i e -> [e] Source

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

assocs :: (IArray a e, Ix i) => a i e -> [(i, e)] Source

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

accumArray Source

Аргументы

:: (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 Source

Принимает массив и список пар и возвращает массив, идентичный левому аргументу, за исключением того, что он был обновлён ассоциациями в правом аргументе. Например, если 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 Source

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 Source

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

ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e Source

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

foldrArray :: (IArray a e, Ix i) => (e -> b -> b) -> b -> a i e -> b Source

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

Since: array-0.5.8.0

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

Жесткая накапливающая левоассоциативная свёртка.

Since: array-0.5.8.0

foldlArray :: (IArray a e, Ix i) => (b -> e -> b) -> b -> a i e -> b Source

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

Since: array-0.5.8.0

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

Жесткая накапливающая правоассоциативная свёртка.

Since: array-0.5.8.0

traverseArray_ :: (IArray a e, Ix i, Applicative f) => (e -> f b) -> a i e -> f () Source

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

Since: array-0.5.8.0

forArray_ :: (IArray a e, Ix i, Applicative f) => a i e -> (e -> f b) -> f () Source

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

Since: array-0.5.8.0

foldlArrayM' :: (IArray a e, Ix i, Monad m) => (b -> e -> m b) -> b -> a i e -> m b Source

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

Since: array-0.5.8.0

foldrArrayM' :: (IArray a e, Ix i, Monad m) => (e -> b -> m b) -> b -> a i e -> m b Source

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

Since: array-0.5.8.0

data UArray i e Source

Массивы с необрамленными элементами. Для 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) -> Целое Исходный код

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

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

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

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

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

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

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

Методы

bounds :: Ix i => UArray i (Указатель a) -> (i, i) Исходный код

numElements :: Ix i => UArray i (Указатель a) -> Целое Исходный код

unsafeArray :: Ix i => (i, i) -> [(Целое, Указатель a)] -> UArray i (Указатель a) Исходный код

unsafeAt :: Ix i => UArray i (Указатель a) -> Целое -> Указатель a Исходный код

unsafeReplace :: Ix i => UArray i (Указатель a) -> [(Целое, Указатель a)] -> UArray i (Указатель a) Исходный код

unsafeAccum :: Ix i => (Указатель a -> e' -> Указатель a) -> UArray i (Указатель a) -> [(Целое, e')] -> UArray i (Указатель a) Исходный код

unsafeAccumArray :: Ix i => (Указатель a -> e' -> Указатель a) -> Указатель a -> (i, i) -> [(Целое, e')] -> UArray i (Указатель 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, 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

(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) Источник
Instance details

Определено в 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

unsafeArrayUArray :: (MArray (STUArray s) e (ST s), Ix i) => (i, i) -> [(Int, e)] -> e -> ST s (UArray i e) Source

unsafeFreezeSTUArray :: STUArray s i e -> ST s (UArray i e) Source

unsafeReplaceUArray :: (MArray (STUArray s) e (ST s), Ix i) => UArray i e -> [(Int, e)] -> ST s (UArray i e) Source

unsafeAccumUArray :: (MArray (STUArray s) e (ST s), Ix i) => (e -> e' -> e) -> UArray i e -> [(Int, e')] -> ST s (UArray i e) Source

unsafeAccumArrayUArray :: (MArray (STUArray s) e (ST s), Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> ST s (UArray i e) Source

eqUArray :: (IArray UArray e, Ix i, Eq e) => UArray i e -> UArray i e -> Bool Source

cmpUArray :: (IArray UArray e, Ix i, Ord e) => UArray i e -> UArray i e -> Ordering Source

cmpIntUArray :: (IArray UArray e, Ord e) => UArray Int e -> UArray Int e -> Ordering Source

showsIArray :: (IArray a e, Ix i, Show i, Show e) => Int -> a i e -> ShowS Source

readIArray :: (IArray a e, Ix i, Read i, Read e) => ReadPrec (a i e) Source

nullStablePtr :: StablePtr a Source

arrEleBottom :: a Source

class Monad m => MArray (a :: Type -> Type -> Type) e (m :: Type -> Type) where Source

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

Тип массива имеет вид (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) Source

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

getNumElements :: Ix i => a i e -> m Int Source

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

newArray :: Ix i => (i, i) -> e -> m (a i e) Source

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

newArray_ :: Ix i => (i, i) -> m (a i e) Source

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

unsafeNewArray_ :: Ix i => (i, i) -> m (a i e) Source

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

unsafeRead :: Ix i => a i e -> Int -> m e Source

unsafeWrite :: Ix i => a i e -> Int -> e -> m () Source

Примеры
Подробности примеров
MArray IOUArray Int16 IO Исходный код
Подробности примера

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

Методы

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

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

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 -> Целое -> IO Int16 Исходный код

unsafeWrite :: Ix i => IOUArray i Int16 -> Целое -> 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 Целое Исходный код

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 -> Целое -> IO Int32 Исходный код

unsafeWrite :: Ix i => IOUArray i Int32 -> Целое -> 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 Целое Исходный код

newArray :: Ix i => (i, i) -> Символ -> ST s (STUArray s i Символ) Исходный код

newArray_ :: Ix i => (i, i) -> ST s (STUArray s i Символ) Исходный код

unsafeNewArray_ :: Ix i => (i, i) -> ST s (STUArray s i Символ) Исходный код

unsafeRead :: Ix i => STUArray s i Символ -> Целое -> ST s Символ Исходный код

unsafeWrite :: Ix i => STUArray s i Символ -> Целое -> Символ -> ST s () Исходный код

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

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

Методы

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

getNumElements :: Ix i => STUArray s i Двойное -> ST s Целое Исходный код

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

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

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

unsafeRead :: Ix i => STUArray s i Двойное -> Целое -> ST s Двойное Исходный код

unsafeWrite :: Ix i => STUArray s i Двойное -> Целое -> Двойное -> ST s () Исходный код

MArray (STUArray s) Вещественное (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 Целое Исходный код

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 -> Целое -> ST s e Исходный код

unsafeWrite :: Ix i => STArray s i e -> Целое -> 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 Целое Исходный код

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) -> Целое -> ST s (FunPtr a) Исходный код

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

MArray (STUArray s) (Указатель 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 () Source

Запись элемента в изменяемый массив

modifyArray :: (MArray a e m, Ix i) => a i e -> i -> (e -> e) -> m () Source

Изменение элемента в изменяемом массиве

Since: array-0.5.6.0

modifyArray' :: (MArray a e m, Ix i) => a i e -> i -> (e -> e) -> m () Source

Изменение элемента в изменяемом массиве. Строгое к записываемому элементу.

Since: array-0.5.6.0

getElems :: (MArray a e m, Ix i) => a i e -> m [e] Source

Возвращение списка всех элементов изменяемого массива

getAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)] Source

Возвращение списка всех ассоциаций изменяемого массива в порядке индексов.

mapArray :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e) Source

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

mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> m (a i e) Source

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

foldlMArray' :: (MArray a e m, Ix i) => (b -> e -> b) -> b -> a i e -> m b Source

Строгая левоассоциативная аккумулятивная свертка.

Since: array-0.5.8.0

foldrMArray' :: (MArray a e m, Ix i) => (e -> b -> b) -> b -> a i e -> m b Source

Строгая правоассоциативная аккумулятивная свертка.

Since: array-0.5.8.0

foldlMArrayM' :: (MArray a e m, Ix i) => (b -> e -> m b) -> b -> a i e -> m b Source

Строгая левоассоциативная моноидная аккумулятивная свертка.

Since: array-0.5.8.0

foldrMArrayM' :: (MArray a e m, Ix i) => (e -> b -> m b) -> b -> a i e -> m b Source

Строгая правоассоциативная моноидная аккумулятивная свертка.

Since: array-0.5.8.0

mapMArrayM_ :: (MArray a e m, Ix i) => (e -> m b) -> a i e -> m () Source

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

Since: array-0.5.8.0

forMArrayM_ :: (MArray a e m, Ix i) => a i e -> (e -> m b) -> m () Source

forMArrayM_ — это mapMArrayM_ со своими аргументами, поменянными местами.

Since: array-0.5.8.0

data STUArray s i e Source

Изменяемый массив с необработанными элементами, который может быть обработан в 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 Целое число Исходный код

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 -> Целое число -> ST s Int16 Исходный код

unsafeWrite :: Ix i => STUArray s i Int16 -> Целое число -> 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 Целое число Исходный код

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) Source

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

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

Реализация без копирования поддерживается только для определённых пар типов массивов; одно ограничение заключается в том, что типы массивов должны иметь идентичное представление. В GHC следующие пары типов массивов имеют некопируемую реализацию unsafeFreeze с O(1).

  • 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) Source

Преобразует неизменяемый массив (любой экземпляр IArray) в изменяемый массив (любой экземпляр MArray) путём создания полной его копии.

thawSTUArray :: UArray i e -> ST s (STUArray s i e) Source

memcpy_thaw :: MutableByteArray# s -> ByteArray# -> CSize -> IO (Ptr a) Source

unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e) Source

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

Обратите внимание, что, поскольку массив, возможно, не копируется, любые последующие изменения, внесённые в изменяемую версию массива, могут быть распространены на неизменяемую версию. Поэтому это безопасно использовать только в том случае, если к неизменяемому массиву больше не будут обращаться в данном потоке, и нет возможности, что к нему могут обратиться в другом потоке. Если вы используете последовательность unsafeThaw_write_unsafeFreeze в многопоточной среде, необходимо гарантировать, что эта последовательность является атомарной по отношению к другим потокам, иначе может произойти сбой сборщика мусора (потому что запись может выполняться в замороженный массив).

Реализация без копирования поддерживается только для определённых пар типов массивов; одно ограничение заключается в том, что типы массивов должны иметь идентичное представление. В GHC следующие пары типов массивов имеют некопируемую реализацию unsafeThaw с O(1).

  • UArray -> IOUArray
  • UArray -> STUArray
  • Array -> IOArray
  • Array -> STArray

unsafeThawSTUArray :: UArray i e -> ST s (STUArray s i e) Source

unsafeThawIOArray :: Array ix e -> IO (IOArray ix e) Source

thawIOArray :: Array ix e -> IO (IOArray ix e) Source

freezeIOArray :: IOArray ix e -> IO (Array ix e) Source

unsafeFreezeIOArray :: IOArray ix e -> IO (Array ix e) Source

castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b) Source

Преобразует STUArray с одним типом элементов в другой с другим типом элементов. Все элементы результирующего массива будут неопределёнными (если вы не знаете, что делаете...).

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/array-0.5.8.0-8d84/Data-Array-Base.html

Spec-Zone.ru

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