Data.Array.ST
| 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.MArray) |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Описание
Изменяемые массивы в коробках и без в ST монаде.
Массивы в коробках
data STArray s i e
Экземпляры
| MArray (STArray s) e (ST s) Source | |
Определено в Data.Array.Base МетодыgetBounds :: Ix i => STArray s i e -> ST s (i, i) Source getNumElements :: Ix i => STArray s i e -> ST s Int Source newArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) Source newArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Source unsafeNewArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Source unsafeRead :: Ix i => STArray s i e -> Int -> ST s e Source unsafeWrite :: Ix i => STArray s i e -> Int -> e -> ST s () Source | |
| MArray (STArray s) e (ST s) Source | |
Определено в Data.Array.Base МетодыgetBounds :: Ix i => STArray s i e -> ST s (i, i) Source getNumElements :: Ix i => STArray s i e -> ST s Int Source newArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) Source newArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Source unsafeNewArray_ :: Ix i => (i, i) -> ST s (STArray s i e) Source unsafeRead :: Ix i => STArray s i e -> Int -> ST s e Source unsafeWrite :: Ix i => STArray s i e -> Int -> e -> ST s () Source | |
| Eq (STArray s i e) | |
runSTArray :: (forall s. ST s (STArray s i e)) -> Array i e Source
Безопасный способ создать и работать с изменяемым массивом, прежде чем вернуть неизменяемый массив для последующего просмотра. Эта функция позволяет избежать копирования массива перед его возвращением — внутри используется unsafeFreeze, но этот обёрткa является безопасным интерфейсом к этой функции.
Массивы без коробок
Мультимассив с нераспакованными элементами, который может быть изменен в ST монаде. Аргументы типа следующие:
-
s: аргумент переменной состояния для типаST -
i: тип индекса массива (должен быть экземпляромIx) -
e: тип элемента массива. Поддерживаются только определенные типы элементов.
STUArray обычно будет более эффективным (с точки зрения как времени, так и пространства) по сравнению с эквивалентной распакованной версией (STArray) с тем же типом элементов. Однако, STUArray является строгим в своих элементах — поэтому не используйте STUArray, если вам нужна нестрогость, которую обеспечивает STArray.
Экземпляры
Определено в 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) Исходный код | |
runSTUArray :: (forall s. ST s (STUArray s i e)) -> UArray i e Исходный код
Безопасный способ создания и работы с неявным изменяемым массивом перед возвратом неизменяемого массива для последующего просмотра. Эта функция избегает копирования массива перед возвратом — она использует unsafeFreeze внутри, но этот обертка — это безопасный интерфейс к этой функции.
Перегруженный интерфейс изменяемого массива
module Data.Array.MArray
© 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-ST.html