Spec-Zone.ru › Haskell 9

Data.Array.IArray

Авторские права (c) The University of Glasgow 2001
Лицензия BSD-style (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность экспериментальная
Переносимость непереносимый (использует Data.Array.Base)
Безопасный Haskell Доверенный
Язык Haskell2010

Содержание

  • Классы массивов
  • Неизменяемые нестрогие (упакованные) массивы
  • Создание массивов
  • Доступ к массивам
  • Свёртки массивов
  • Инкрементальное обновление массивов
  • Производные массивы

Описание

Неизменяемые массивы с перегруженным интерфейсом. Типы массивов, которые можно использовать с этим интерфейсом, см. в типе Array, экспортируемом этим модулем, и в модуле Data.Array.Unboxed. Другие пакеты, такие как diffarray, также предоставляют массивы с использованием этого интерфейса.

Классы массивов

class IArray (a :: Type -> Type -> Type) e Исходный код

Класс неизменяемых типов массивов.

Тип массива имеет форму (a i e), где a — конструктор типа массива (kind * -> * -> *), i — тип индекса (представитель класса Ix), а e — тип элемента. Класс IArray параметризован как по a, так и по e, поэтому можно определять экземпляры, специализированные для определённых типов элементов.

Минимальное полное определение

bounds, numElements, unsafeArray, unsafeAt

Экземпляры
Сведения об экземплярах
IArray UArray Int16 Исходный код
Сведения об экземпляре

Определён в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int16 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int16 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int16)] -> UArray i Int16 Исходный код

unsafeAt :: Ix i => UArray i Int16 -> Int -> Int16 Исходный код

unsafeReplace :: Ix i => UArray i Int16 -> [(Int, Int16)] -> UArray i Int16 Исходный код

unsafeAccum :: Ix i => (Int16 -> e' -> Int16) -> UArray i Int16 -> [(Int, e')] -> UArray i Int16 Исходный код

unsafeAccumArray :: Ix i => (Int16 -> e' -> Int16) -> Int16 -> (i, i) -> [(Int, e')] -> UArray i Int16 Исходный код

IArray UArray Int32 Исходный код
Сведения об экземпляре

Определён в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int32 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int32 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int32)] -> UArray i Int32 Исходный код

unsafeAt :: Ix i => UArray i Int32 -> Int -> Int32 Исходный код

unsafeReplace :: Ix i => UArray i Int32 -> [(Int, Int32)] -> UArray i Int32 Исходный код

unsafeAccum :: Ix i => (Int32 -> e' -> Int32) -> UArray i Int32 -> [(Int, e')] -> UArray i Int32 Исходный код

unsafeAccumArray :: Ix i => (Int32 -> e' -> Int32) -> Int32 -> (i, i) -> [(Int, e')] -> UArray i Int32 Исходный код

IArray UArray Int64 Исходный код
Сведения об экземпляре

Определён в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int64 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int64 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int64)] -> UArray i Int64 Исходный код

unsafeAt :: Ix i => UArray i Int64 -> Int -> Int64 Исходный код

unsafeReplace :: Ix i => UArray i Int64 -> [(Int, Int64)] -> UArray i Int64 Исходный код

unsafeAccum :: Ix i => (Int64 -> e' -> Int64) -> UArray i Int64 -> [(Int, e')] -> UArray i Int64 Исходный код

unsafeAccumArray :: Ix i => (Int64 -> e' -> Int64) -> Int64 -> (i, i) -> [(Int, e')] -> UArray i Int64 Исходный код

IArray UArray Int8 Исходный код
Сведения об экземпляре

Определён в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int8 -> (i, i) Исходный код

numElements :: Ix i => UArray i Int8 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Int8)] -> UArray i Int8 Исходный код

unsafeAt :: Ix i => UArray i Int8 -> Int -> Int8 Исходный код

unsafeReplace :: Ix i => UArray i Int8 -> [(Int, Int8)] -> UArray i Int8 Исходный код

unsafeAccum :: Ix i => (Int8 -> e' -> Int8) -> UArray i Int8 -> [(Int, e')] -> UArray i Int8 Исходный код

unsafeAccumArray :: Ix i => (Int8 -> e' -> Int8) -> Int8 -> (i, i) -> [(Int, e')] -> UArray i Int8 Исходный код

IArray UArray Word16 Исходный код
Сведения об экземпляре

Определён в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word16 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word16 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word16)] -> UArray i Word16 Исходный код

unsafeAt :: Ix i => UArray i Word16 -> Int -> Word16 Исходный код

unsafeReplace :: Ix i => UArray i Word16 -> [(Int, Word16)] -> UArray i Word16 Исходный код

unsafeAccum :: Ix i => (Word16 -> e' -> Word16) -> UArray i Word16 -> [(Int, e')] -> UArray i Word16 Исходный код

unsafeAccumArray :: Ix i => (Word16 -> e' -> Word16) -> Word16 -> (i, i) -> [(Int, e')] -> UArray i Word16 Исходный код

IArray UArray Word32 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word32 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word32 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word32)] -> UArray i Word32 Исходный код

unsafeAt :: Ix i => UArray i Word32 -> Int -> Word32 Исходный код

unsafeReplace :: Ix i => UArray i Word32 -> [(Int, Word32)] -> UArray i Word32 Исходный код

unsafeAccum :: Ix i => (Word32 -> e' -> Word32) -> UArray i Word32 -> [(Int, e')] -> UArray i Word32 Исходный код

unsafeAccumArray :: Ix i => (Word32 -> e' -> Word32) -> Word32 -> (i, i) -> [(Int, e')] -> UArray i Word32 Исходный код

IArray UArray Word64 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word64 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word64 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word64)] -> UArray i Word64 Исходный код

unsafeAt :: Ix i => UArray i Word64 -> Int -> Word64 Исходный код

unsafeReplace :: Ix i => UArray i Word64 -> [(Int, Word64)] -> UArray i Word64 Исходный код

unsafeAccum :: Ix i => (Word64 -> e' -> Word64) -> UArray i Word64 -> [(Int, e')] -> UArray i Word64 Исходный код

unsafeAccumArray :: Ix i => (Word64 -> e' -> Word64) -> Word64 -> (i, i) -> [(Int, e')] -> UArray i Word64 Исходный код

IArray UArray Word8 Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word8 -> (i, i) Исходный код

numElements :: Ix i => UArray i Word8 -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Word8)] -> UArray i Word8 Исходный код

unsafeAt :: Ix i => UArray i Word8 -> Int -> Word8 Исходный код

unsafeReplace :: Ix i => UArray i Word8 -> [(Int, Word8)] -> UArray i Word8 Исходный код

unsafeAccum :: Ix i => (Word8 -> e' -> Word8) -> UArray i Word8 -> [(Int, e')] -> UArray i Word8 Исходный код

unsafeAccumArray :: Ix i => (Word8 -> e' -> Word8) -> Word8 -> (i, i) -> [(Int, e')] -> UArray i Word8 Исходный код

IArray UArray Bool Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Bool -> (i, i) Исходный код

numElements :: Ix i => UArray i Bool -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Bool)] -> UArray i Bool Исходный код

unsafeAt :: Ix i => UArray i Bool -> Int -> Bool Исходный код

unsafeReplace :: Ix i => UArray i Bool -> [(Int, Bool)] -> UArray i Bool Исходный код

unsafeAccum :: Ix i => (Bool -> e' -> Bool) -> UArray i Bool -> [(Int, e')] -> UArray i Bool Исходный код

unsafeAccumArray :: Ix i => (Bool -> e' -> Bool) -> Bool -> (i, i) -> [(Int, e')] -> UArray i Bool Исходный код

IArray UArray Char Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Char -> (i, i) Исходный код

numElements :: Ix i => UArray i Char -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Char)] -> UArray i Char Исходный код

unsafeAt :: Ix i => UArray i Char -> Int -> Char Исходный код

unsafeReplace :: Ix i => UArray i Char -> [(Int, Char)] -> UArray i Char Исходный код

unsafeAccum :: Ix i => (Char -> e' -> Char) -> UArray i Char -> [(Int, e')] -> UArray i Char Исходный код

unsafeAccumArray :: Ix i => (Char -> e' -> Char) -> Char -> (i, i) -> [(Int, e')] -> UArray i Char Исходный код

IArray UArray Double Исходный код
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Double -> (i, i) Исходный код

numElements :: Ix i => UArray i Double -> Int Исходный код

unsafeArray :: Ix i => (i, i) -> [(Int, Double)] -> UArray i Double Исходный код

unsafeAt :: Ix i => UArray i Double -> Int -> Double Исходный код

unsafeReplace :: Ix i => UArray i Double -> [(Int, Double)] -> UArray i Double Исходный код

unsafeAccum :: Ix i => (Double -> e' -> Double) -> UArray i Double -> [(Int, e')] -> UArray i Double Исходный код

unsafeAccumArray :: Ix i => (Double -> e' -> Double) -> Double -> (i, i) -> [(Int, e')] -> UArray i Double Исходный код

IArray UArray Float Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Float -> (i, i) Источник

numElements :: Ix i => UArray i Float -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Float)] -> UArray i Float Источник

unsafeAt :: Ix i => UArray i Float -> Int -> Float Источник

unsafeReplace :: Ix i => UArray i Float -> [(Int, Float)] -> UArray i Float Источник

unsafeAccum :: Ix i => (Float -> e' -> Float) -> UArray i Float -> [(Int, e')] -> UArray i Float Источник

unsafeAccumArray :: Ix i => (Float -> e' -> Float) -> Float -> (i, i) -> [(Int, e')] -> UArray i Float Источник

IArray UArray Int Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Int -> (i, i) Источник

numElements :: Ix i => UArray i Int -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Int)] -> UArray i Int Источник

unsafeAt :: Ix i => UArray i Int -> Int -> Int Источник

unsafeReplace :: Ix i => UArray i Int -> [(Int, Int)] -> UArray i Int Источник

unsafeAccum :: Ix i => (Int -> e' -> Int) -> UArray i Int -> [(Int, e')] -> UArray i Int Источник

unsafeAccumArray :: Ix i => (Int -> e' -> Int) -> Int -> (i, i) -> [(Int, e')] -> UArray i Int Источник

IArray UArray Word Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i Word -> (i, i) Источник

numElements :: Ix i => UArray i Word -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Word)] -> UArray i Word Источник

unsafeAt :: Ix i => UArray i Word -> Int -> Word Источник

unsafeReplace :: Ix i => UArray i Word -> [(Int, Word)] -> UArray i Word Источник

unsafeAccum :: Ix i => (Word -> e' -> Word) -> UArray i Word -> [(Int, e')] -> UArray i Word Источник

unsafeAccumArray :: Ix i => (Word -> e' -> Word) -> Word -> (i, i) -> [(Int, e')] -> UArray i Word Источник

IArray Array e Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => Array i e -> (i, i) Источник

numElements :: Ix i => Array i e -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e Источник

unsafeAt :: Ix i => Array i e -> Int -> e Источник

unsafeReplace :: Ix i => Array i e -> [(Int, e)] -> Array i e Источник

unsafeAccum :: Ix i => (e -> e' -> e) -> Array i e -> [(Int, e')] -> Array i e Источник

unsafeAccumArray :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> Array i e Источник

IArray UArray (FunPtr a) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (FunPtr a) -> (i, i) Источник

numElements :: Ix i => UArray i (FunPtr a) -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, FunPtr a)] -> UArray i (FunPtr a) Источник

unsafeAt :: Ix i => UArray i (FunPtr a) -> Int -> FunPtr a Источник

unsafeReplace :: Ix i => UArray i (FunPtr a) -> [(Int, FunPtr a)] -> UArray i (FunPtr a) Источник

unsafeAccum :: Ix i => (FunPtr a -> e' -> FunPtr a) -> UArray i (FunPtr a) -> [(Int, e')] -> UArray i (FunPtr a) Источник

unsafeAccumArray :: Ix i => (FunPtr a -> e' -> FunPtr a) -> FunPtr a -> (i, i) -> [(Int, e')] -> UArray i (FunPtr a) Источник

IArray UArray (Ptr a) Источник
Подробности экземпляра

Определено в Data.Array.Base

Методы

bounds :: Ix i => UArray i (Ptr a) -> (i, i) Источник

numElements :: Ix i => UArray i (Ptr a) -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, Ptr a)] -> UArray i (Ptr a) Источник

unsafeAt :: Ix i => UArray i (Ptr a) -> Int -> Ptr a Источник

unsafeReplace :: Ix i => UArray i (Ptr a) -> [(Int, Ptr a)] -> UArray i (Ptr a) Источник

unsafeAccum :: Ix i => (Ptr a -> e' -> Ptr a) -> UArray i (Ptr a) -> [(Int, e')] -> UArray i (Ptr a) Источник

unsafeAccumArray :: Ix i => (Ptr a -> e' -> Ptr a) -> Ptr a -> (i, i) -> [(Int, e')] -> UArray i (Ptr a) Источник

IArray UArray (StablePtr a) Источник
Подробное описание экземпляра

Определён в Data.Array.Base

Методы

bounds :: Ix i => UArray i (StablePtr a) -> (i, i) Источник

numElements :: Ix i => UArray i (StablePtr a) -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, StablePtr a)] -> UArray i (StablePtr a) Источник

unsafeAt :: Ix i => UArray i (StablePtr a) -> Int -> StablePtr a Источник

unsafeReplace :: Ix i => UArray i (StablePtr a) -> [(Int, StablePtr a)] -> UArray i (StablePtr a) Источник

unsafeAccum :: Ix i => (StablePtr a -> e' -> StablePtr a) -> UArray i (StablePtr a) -> [(Int, e')] -> UArray i (StablePtr a) Источник

unsafeAccumArray :: Ix i => (StablePtr a -> e' -> StablePtr a) -> StablePtr a -> (i, i) -> [(Int, e')] -> UArray i (StablePtr a) Источник

module Data.Ix

Неизменяемые нестрогие (боксированные) массивы

data Array i e

Экземпляры
Подробное описание экземпляров
IArray Array e Источник
Подробное описание экземпляра

Определён в Data.Array.Base

Методы

bounds :: Ix i => Array i e -> (i, i) Источник

numElements :: Ix i => Array i e -> Int Источник

unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e Источник

unsafeAt :: Ix i => Array i e -> Int -> e Источник

unsafeReplace :: Ix i => Array i e -> [(Int, e)] -> Array i e Источник

unsafeAccum :: Ix i => (e -> e' -> e) -> Array i e -> [(Int, e')] -> Array i e Источник

unsafeAccumArray :: Ix i => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> Array i e Источник

Functor (Array i)
Подробное описание экземпляра

Определён в GHC.Internal.Arr

Методы

fmap :: (a -> b) -> Array i a -> Array i b

(<$) :: a -> Array i b -> Array i a

Foldable (Array i)
Подробное описание экземпляра

Определён в GHC.Internal.Data.Foldable

Методы

fold :: Monoid m => Array i m -> m

foldMap :: Monoid m => (a -> m) -> Array i a -> m

foldMap' :: Monoid m => (a -> m) -> Array i a -> m

foldr :: (a -> b -> b) -> b -> Array i a -> b

foldr' :: (a -> b -> b) -> b -> Array i a -> b

foldl :: (b -> a -> b) -> b -> Array i a -> b

foldl' :: (b -> a -> b) -> b -> Array i a -> b

foldr1 :: (a -> a -> a) -> Array i a -> a

foldl1 :: (a -> a -> a) -> Array i a -> a

toList :: Array i a -> [a]

null :: Array i a -> Bool

length :: Array i a -> Int

elem :: Eq a => a -> Array i a -> Bool

maximum :: Ord a => Array i a -> a

minimum :: Ord a => Array i a -> a

sum :: Num a => Array i a -> a

product :: Num a => Array i a -> a

Ix i => Traversable (Array i)
Подробное описание экземпляра

Определён в GHC.Internal.Data.Traversable

Методы

traverse :: Applicative f => (a -> f b) -> Array i a -> f (Array i b)

sequenceA :: Applicative f => Array i (f a) -> f (Array i a)

mapM :: Monad m => (a -> m b) -> Array i a -> m (Array i b)

sequence :: Monad m => Array i (m a) -> m (Array i a)

(Ix i, Eq e) => Eq (Array i e)
Подробное описание экземпляра

Определён в GHC.Internal.Arr

Методы

(==) :: Array i e -> Array i e -> Bool

(/=) :: Array i e -> Array i e -> Bool

(Ix i, Ord e) => Ord (Array i e)
Подробное описание экземпляра

Определён в GHC.Internal.Arr

Методы

compare :: Array i e -> Array i e -> Ordering

(<) :: Array i e -> Array i e -> Bool

(<=) :: Array i e -> Array i e -> Bool

(>) :: Array i e -> Array i e -> Bool

(>=) :: Array i e -> Array i e -> Bool

max :: Array i e -> Array i e -> Array i e

min :: Array i e -> Array i e -> Array i e

(Ix a, Read a, Read b) => Read (Array a b)
Подробное описание экземпляра

Определён в GHC.Internal.Read

Методы

readsPrec :: Int -> ReadS (Array a b)

readList :: ReadS [Array a b]

readPrec :: ReadPrec (Array a b)

readListPrec :: ReadPrec [Array a b]

(Ix a, Show a, Show b) => Show (Array a b)
Подробное описание экземпляра

Определён в GHC.Internal.Arr

Методы

showsPrec :: Int -> Array a b -> ShowS

show :: Array a b -> String

showList :: [Array a b] -> ShowS

Создание массивов

array Источник

Аргументы

:: (IArray a e, Ix i)
=> (i, i)

границы массива: (нижняя,верхняя)

-> [(i, e)]

список ассоциаций

-> a i e

Создаёт неизменяемый массив на основе пары границ и списка начальных ассоциаций.

Границы задаются парой нижней и верхней границ массива соответственно. Например, вектор длины 10 с индексацией от единицы имеет границы (1,10), а матрица размером 10 на 10 с индексацией от единицы — границы ((1,1),(10,10)).

Ассоциация — это пара вида (i,x), которая задаёт значение массива по индексу i равным x. Массив не определён, если какой-либо индекс в списке находится вне границ. Если у нескольких ассоциаций в списке одинаковый индекс, значение по этому индексу зависит от реализации. (В GHC используется последнее заданное значение для этого индекса. Другие реализации также поступают так для боксированных массивов, но Haskell 98 требует, чтобы для Array значением по таким индексам было bottom.)

Поскольку индексы необходимо проверять на наличие этих ошибок, array является строгой по аргументу границ и индексам списка ассоциаций. Строгость или нестрогость array по элементам зависит от типа массива: Array — нестрогий тип массива, а все массивы UArray являются строгими. Поэтому в нестрогом массиве возможны такие рекурсивные определения:

a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i \<- [2..100]])

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

Если в каком-либо измерении нижняя граница больше верхней, массив допустим, но пуст. Обращение по индексу к пустому массиву всегда приводит к ошибке выхода за границы, но bounds по-прежнему возвращает границы, с которыми был создан массив.

listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e Источник

Создаёт неизменяемый массив из списка начальных элементов. Список задаёт элементы массива в порядке возрастания, начиная с наименьшего индекса.

accumArray Источник

Аргументы

:: (IArray a e, Ix i)
=> (e -> e' -> e)

Функция накопления

-> e

Элемент по умолчанию

-> (i, i)

Границы массива

-> [(i, e')]

Список ассоциаций

-> a i e

Возвращает: массив

Создаёт неизменяемый массив из списка ассоциаций. В отличие от array, в списке ассоциаций один и тот же индекс может встречаться несколько раз; для объединения значений элементов с одинаковым индексом используется функция накопления.

Например, если дан список значений некоторого типа индекса, hist строит гистограмму количества вхождений каждого индекса в заданном диапазоне:

hist :: (Ix a, Num b) => (a,a) -> [a] -> Array a b
hist bnds is = accumArray (+) 0 bnds [(i, 1) | i\<-is, inRange bnds i]

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

Создаёт неизменяемый массив с помощью функции-генератора.

Начиная с: array-0.5.6.0

Доступ к массивам

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

Возвращает элемент неизменяемого массива по указанному индексу или выбрасывает исключение, если индекс находится вне границ массива.

(!?) :: (IArray a e, Ix i) => a i e -> i -> Maybe e Источник

Возвращает Just элемент неизменяемого массива по указанному индексу или Nothing, если индекс находится вне границ массива.

Начиная с: array-0.5.6.0

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

Извлекает границы неизменяемого массива

indices :: (IArray a e, Ix i) => a i e -> [i] Источник

Возвращает список всех допустимых индексов массива.

elems :: (IArray a e, Ix i) => a i e -> [e] Источник

Возвращает список всех элементов массива в том же порядке, что и их индексы.

assocs :: (IArray a e, Ix i) => a i e -> [(i, e)] Источник

Возвращает содержимое массива в виде списка ассоциаций.

Свёртки массивов

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

Ленивое правоассоциативное свёртывание.

Начиная с: array-0.5.8.0

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

Строгое накапливающее левоассоциативное свёртывание.

Начиная с: array-0.5.8.0

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

Ленивое левоассоциативное свёртывание.

Начиная с: array-0.5.8.0

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

Строгое накапливающее правоассоциативное свёртывание.

Начиная с: array-0.5.8.0

traverseArray_ :: (IArray a e, Ix i, Applicative f) => (e -> f b) -> a i e -> f () Источник

Преобразует элементы в аппликативные действия, выполняет их последовательно слева направо и отбрасывает результаты.

Начиная с: array-0.5.8.0

forArray_ :: (IArray a e, Ix i, Applicative f) => a i e -> (e -> f b) -> f () Источник

forArray_ — это traverseArray_ с переставленными аргументами.

Начиная с: array-0.5.8.0

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

Строгое накапливающее левоассоциативное монадическое свёртывание.

Начиная с: array-0.5.8.0

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

Строгое накапливающее правоассоциативное монадическое свёртывание.

Начиная с: array-0.5.8.0

Инкрементальное обновление массивов

(//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e Источник

Принимает массив и список пар и возвращает массив, идентичный левому аргументу, но обновлённый ассоциациями из правого аргумента. Например, если m — матрица n на n с нумерацией от 1, то m//[((i,i), 0) | i <- [1..n]] — та же матрица, но с нулями на диагонали.

Как и для функции array, если у двух ассоциаций в списке совпадают индексы, значение по этому индексу зависит от реализации. (В GHC используется последнее указанное значение для этого индекса. Другие реализации также поступают так для массивов без указателей, но Haskell 98 требует, чтобы для Array значение по таким индексам было bottom.)

Для большинства типов массивов эта операция выполняется за O(n), где n — размер массива. Однако пакет diffarray предоставляет тип массива, для которого сложность этой операции линейна относительно числа обновлений.

accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e -> [(i, e')] -> a i e Источник

accum f принимает массив и список ассоциаций и накапливает в массиве пары из списка с помощью накапливающей функции f. Таким образом, accumArray можно определить с помощью accum:

accumArray f z b = accum f (array b [(i, z) | i \<- range b])

Производные массивы

amap :: (IArray a e', IArray a e, Ix i) => (e' -> e) -> a i e' -> a i e Источник

Возвращает новый массив, полученный из исходного применением функции к каждому элементу.

ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e Источник

Возвращает новый массив, полученный из исходного применением функции к каждому индексу.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/array-0.5.8.0-93e8/Data-Array-IArray.html

Spec-Zone.ru

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