Spec-Zone.ru › Haskell 8

Data.Array.IArray

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

Содержание

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

Описание

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

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

class IArray a e Исходный код

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

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

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

границы, numElements, unsafeArray, unsafeAt

Экземпляры
Подробности об экземплярах
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 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 Целое -> (i, i) Исходный код

numElements :: Ix i => UArray i Целое -> Целое

unsafeArray :: Ix i => (i, i) -> [(Целое, Целое)] -> UArray i Целое

unsafeAt :: Ix i => UArray i Целое -> Целое -> Целое

unsafeReplace :: Ix i => UArray i Целое -> [(Целое, Целое)] -> UArray i Целое

unsafeAccum :: Ix i => (Целое -> e' -> Целое) -> UArray i Целое -> [(Целое, e')] -> UArray i Целое

unsafeAccumArray :: Ix i => (Целое -> e' -> Целое) -> Целое -> (i, i) -> [(Целое, e')] -> UArray i Целое

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

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

Методы

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

numElements :: Ix i => UArray i Int8 -> Целое

unsafeArray :: Ix i => (i, i) -> [(Целое, Int8)] -> UArray i Int8

unsafeAt :: Ix i => UArray i Int8 -> Целое -> Int8

unsafeReplace :: Ix i => UArray i Int8 -> [(Целое, Int8)] -> UArray i Int8

unsafeAccum :: Ix i => (Int8 -> e' -> Int8) -> UArray i Int8 -> [(Целое, e')] -> UArray i Int8

unsafeAccumArray :: Ix i => (Int8 -> e' -> Int8) -> Int8 -> (i, i) -> [(Целое, e')] -> UArray i Int8

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 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 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 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 (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)

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 (FunPtr a)
Подробности экземпляра

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

Методы

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

numElements :: Ix i => UArray i (FunPtr a) -> Целое

unsafeArray :: Ix i => (i, i) -> [(Целое, FunPtr a)] -> UArray i (FunPtr a)

unsafeAt :: Ix i => UArray i (FunPtr a) -> Целое -> FunPtr a

unsafeReplace :: Ix i => UArray i (FunPtr a) -> [(Целое, FunPtr a)] -> UArray i (FunPtr a)

unsafeAccum :: Ix i => (FunPtr a -> e' -> FunPtr a) -> UArray i (FunPtr a) -> [(Целое, e')] -> UArray i (FunPtr a)

unsafeAccumArray :: Ix i => (FunPtr a -> e' -> FunPtr a) -> FunPtr a -> (i, i) -> [(Целое, e')] -> UArray i (FunPtr a)

module Data.Ix

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

data Массив i e Исходный код

Тип неизменяемых нестрогих (упакованных) массивов с индексами в i и элементами в e.

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

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

Методы

bounds :: Ix i => Array i e -> (i, i) Source

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)

С момента версии: base-2.1

Подробности об экземпляре

Определено в GHC.Arr

Методы

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

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

Foldable (Array i)

С момента версии: base-4.8.0.0

Подробности об экземпляре

Определено в Data.Foldable

Методы

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

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

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

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

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

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

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

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

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

toList :: Array i a -> [a] Source

null :: Array i a -> Bool Source

length :: Array i a -> Int Source

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

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

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

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

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

Ix i => Traversable (Array i)

С момента версии: base-2.1

Подробности экземпляра

Определено в 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)

С момента: base-2.1

Подробности экземпляра

Определено в GHC.Arr

Методы

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

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

(Ix i, Ord e) => Ord (Array i e)

С момента: base-2.1

Подробности экземпляра

Определено в GHC.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)

С момента: base-2.1

Подробности экземпляра

Определено в GHC.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)

С момента: base-2.1

Подробности экземпляра

Определено в GHC.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

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

Границы задаются как пара наименьшей и наибольшей границ в массиве соответственно. Например, вектор с началом от 1 и длиной 10 имеет границы (1,10), а матрица 10х10 с началом от 1 имеет границы ((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 Source

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

accumArray Source

Аргументы

:: (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]

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

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

Возвращает элемент неизменяемого массива в указанном индексе.

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

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

indices :: (IArray a e, Ix i) => a i e -> [i] Source

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

elems :: (IArray a e, Ix i) => a i e -> [e] Source

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

assocs :: (IArray a e, Ix i) => a i e -> [(i, e)] Source

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

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

(//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e Source

Принимает массив и список пар и возвращает массив, идентичный левому аргументу, за исключением того, что он был обновлён ассоциациями в правом аргументе. Например, если m — это матрица 1-го начала, n на n, то 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 Source

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 Source

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

ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e Source

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

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

Spec-Zone.ru

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