Data.Array.MArray.Safe
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | libraries@haskell.org |
| Стабильность | экспериментальная |
| Переносимость | непереносимая (использует Data.Array.Base) |
| Safe Haskell | Надёжный |
| Язык | Haskell2010 |
Содержание
Описание
Перегруженный интерфейс для изменяемых массивов. Для типов массивов, которые могут быть использованы с этим интерфейсом, см. Data.Array.IO, Data.Array.ST и Data.Array.Storable. . Только безопасный API Data.Array.MArray.
С момента: 0.4.0.0
Класс типов изменяемых массивов
class Monad m => MArray a e m where Источник
Класс типов изменяемых массивов.
Тип массива имеет вид (a i e) где a — конструктор типа массива (тип * -> * -> *), i — тип индексов (член класса Ix), а e — тип элементов.
Класс MArray параметризован как по a, так и по e (чтобы можно было определять специализированные экземпляры для определённых типов элементов, так же, как и для IArray), а также по типу монады m, в которой будет выполняться работа с изменяемым массивом.
Минимальное полное определение
getBounds, getNumElements, unsafeRead, unsafeWrite
Методы
getBounds :: Ix i => a i e -> m (i, i) Источник
Возвращает границы массива
newArray :: Ix i => (i, i) -> e -> m (a i e) Источник
Создаёт новый массив, при этом каждый элемент инициализируется заданным значением.
newArray_ :: Ix i => (i, i) -> m (a i e) Источник
Создаёт новый массив, при этом каждый элемент инициализируется неопределённым значением. В монадическом контексте, в котором операции должны быть детерминированными (например, монада ST), элементы массива инициализируются фиксированным, но неопределённым значением, таким как ноль.
Экземпляры
Класс Ix и операции
module Data.Ix
Создание изменяемых массивов
newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e) Source
Создает изменяемый массив из списка начальных элементов. Список задает элементы массива в порядке возрастания, начиная с наименьшего индекса.
Чтение и запись изменяемых массивов
readArray :: (MArray a e m, Ix i) => a i e -> i -> m e Source
Чтение элемента из изменяемого массива
writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m () Источник
Запись элемента в изменяемый массив
Производные массивы
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) Источник
Создаёт новый массив, производный от исходного, применяя функцию к каждому индексу.
Декомпозиция изменяемых массивов
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)] Источник
Возвращает список всех ассоциаций изменяемого массива в порядке индексов.
Преобразования между изменяемыми и неизменяемыми массивами
freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e) Источник
Преобразует изменяемый массив (любой экземпляр MArray) в неизменяемый массив (любой экземпляр IArray) путём создания полной копии.
thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e) Источник
Преобразует неизменяемый массив (любой экземпляр IArray) в изменяемый массив (любой экземпляр MArray) путём создания полной копии.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/array-0.5.1.0/Data-Array-MArray-Safe.html