Data.Array.MArray
| Copyright | (c) The University of Glasgow 2001 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | experimental |
| Portability | non-portable (uses Data.Array.Base) |
| Safe Haskell | None |
| Language | Haskell2010 |
Содержание
Описание
Перегруженный интерфейс для изменяемых массивов. Для типов массивов, которые могут быть использованы с этим интерфейсом, см. Data.Array.IO, Data.Array.ST и Data.Array.Storable.
Класс типов изменяемых массивов
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 () 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
Создаёт новый массив, полученный из исходного массива путём применения функции к каждому индексу.
Распаковка изменяемых массивов
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
Возвращает список всех ассоциаций изменяемого массива в порядке индексов.
Преобразования между изменяемыми и неизменяемыми массивами
freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e) Source
Преобразует изменяемый массив (любой экземпляр MArray) в неизменяемый массив (любой экземпляр IArray) путём создания его полной копии.
thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e) Source
Преобразует неизменяемый массив (любой экземпляр 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.html