Spec-Zone.ru › Haskell 7

Data.Array.Unsafe

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

Содержание

  • Небезопасные операции

Описание

Содержит различные небезопасные операции, которые могут быть выполнены над массивами.

С момента: 0.4.0.0

Небезопасные операции

castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b) Источник

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

castIOUArray :: IOUArray ix a -> IO (IOUArray ix b) Источник

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

unsafeFreeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e) Источник

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

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

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

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

unsafeThaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e) Источник

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

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

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

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

unsafeForeignPtrToStorableArray :: Ix i => ForeignPtr e -> (i, i) -> IO (StorableArray i e) Источник

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

© 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-Unsafe.html

Spec-Zone.ru

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