Spec-Zone.ru › Haskell 7

Data.Array.MArray.Safe

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

Содержание

  • Класс типов изменяемых массивов
  • Класс Ix и операции
  • Создание изменяемых массивов
  • Чтение и запись в изменяемые массивы
  • Производные массивы
  • Разборка изменяемых массивов
  • Преобразования между изменяемыми и неизменяемыми массивами

Описание

Перегруженный интерфейс для изменяемых массивов. Для типов массивов, которые могут быть использованы с этим интерфейсом, см. 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), элементы массива инициализируются фиксированным, но неопределённым значением, таким как ноль.

Экземпляры

MArray IOArray e IO
MArray IOUArray Bool IO
MArray IOUArray Char IO
MArray IOUArray Double IO
MArray IOUArray Float IO
MArray IOUArray Int IO
MArray IOUArray Int8 IO
MArray IOUArray Int16 IO
MArray IOUArray Int32 IO
MArray IOUArray Int64 IO
MArray IOUArray Word IO
MArray IOUArray Word8 IO
MArray IOUArray Word16 IO
MArray IOUArray Word32 IO
MArray IOUArray Word64 IO
Storable e => MArray StorableArray e IO
MArray IOUArray (StablePtr a) IO
MArray IOUArray (Ptr a) IO
MArray IOUArray (FunPtr a) IO
MArray (STArray s) e (ST s)
MArray (STArray s) e (ST s)
MArray (STUArray s) Word64 (ST s)
MArray (STUArray s) Word32 (ST s)
MArray (STUArray s) Word16 (ST s)
MArray (STUArray s) Word8 (ST s)
MArray (STUArray s) Int64 (ST s)
MArray (STUArray s) Int32 (ST s)
MArray (STUArray s) Int16 (ST s)
MArray (STUArray s) Int8 (ST s)
MArray (STUArray s) Double (ST s)
MArray (STUArray s) Float (ST s)
MArray (STUArray s) Word (ST s)
MArray (STUArray s) Int (ST s)
MArray (STUArray s) Char (ST s)
MArray (STUArray s) Bool (ST s)
MArray (STUArray s) (StablePtr a) (ST s)
MArray (STUArray s) (FunPtr a) (ST s)
MArray (STUArray s) (Ptr a) (ST s)

Класс 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

Spec-Zone.ru

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