Spec-Zone.ru › Haskell 8

GHC.Arr

Авторские права (c) Университет Глазго 1994-2000
Лицензия см. libraries/base/LICENSE
Поддержка cvs-ghc@haskell.org
Стабильность внутренняя
Переносимость непереносимая (расширения GHC)
Безопасный Haskell Небезопасный
Язык Haskell2010

Содержание

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

Описание

Реализация массивов в GHC.

class Ord a => Ix a where Исходный код

Класс Ix используется для сопоставления непрерывного поддиапазона значений в типе с целыми числами. Он используется в основном для индексации массивов (см. пакет массивов).

Первый аргумент (l,u) каждой из этих операций — пара, определяющая нижнюю и верхнюю границы непрерывного поддиапазона значений.

Реализация имеет право предполагать следующие законы об этих операциях:

  • inRange (l,u) i == elem i (range (l,u))
  • range (l,u) !! index (l,u) i == i, когда inRange (l,u) i
  • map (index (l,u)) (range (l,u))) == [0..rangeSize (l,u)-1]
  • rangeSize (l,u) == length (range (l,u))

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

range, (index | unsafeIndex), inRange

Методы

range :: (a, a) -> [a] Исходный код

Список значений в поддиапазоне, определяемом парой границ.

index :: (a, a) -> a -> Int Исходный код

Позиция индекса в поддиапазоне.

unsafeIndex :: (a, a) -> a -> Int Исходный код

Аналогично index, но без проверки, что значение находится в диапазоне.

inRange :: (a, a) -> a -> Bool Исходный код

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

rangeSize :: (a, a) -> Int Исходный код

Размер поддиапазона, определяемого парой границ.

unsafeRangeSize :: (a, a) -> Int Исходный код

Аналогично rangeSize, но без проверки, что верхняя граница находится в диапазоне.

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

С версии: base-2.1

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

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

Методы

range :: (Bool, Bool) -> [Bool] Исходный код

index :: (Bool, Bool) -> Bool -> Int Исходный код

unsafeIndex :: (Bool, Bool) -> Bool -> Int Исходный код

inRange :: (Bool, Bool) -> Bool -> Bool Исходный код

rangeSize :: (Bool, Bool) -> Int Исходный код

unsafeRangeSize :: (Bool, Bool) -> Int Исходный код

Ix Char

С версии: base-2.1

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

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

Методы

range :: (Char, Char) -> [Char] Исходный код

index :: (Char, Char) -> Char -> Int Исходный код

unsafeIndex :: (Char, Char) -> Char -> Int Исходный код

inRange :: (Char, Char) -> Char -> Bool Исходный код

rangeSize :: (Char, Char) -> Int Исходный код

unsafeRangeSize :: (Char, Char) -> Int Исходный код

Ix Int

С версии: base-2.1

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

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

Методы

range :: (Int, Int) -> [Int] Исходный код

index :: (Int, Int) -> Int -> Int Исходный код

unsafeIndex :: (Int, Int) -> Int -> Int Исходный код

inRange :: (Int, Int) -> Int -> Bool Исходный код

rangeSize :: (Int, Int) -> Int Исходный код

unsafeRangeSize :: (Int, Int) -> Int Исходный код

Ix Int8

С версии: base-2.1

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

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

Методы

range :: (Int8, Int8) -> [Int8] Исходный код

index :: (Int8, Int8) -> Int8 -> Int Исходный код

unsafeIndex :: (Int8, Int8) -> Int8 -> Int Исходный код

inRange :: (Int8, Int8) -> Int8 -> Bool Исходный код

rangeSize :: (Int8, Int8) -> Int Исходный код

unsafeRangeSize :: (Int8, Int8) -> Int Исходный код

Ix Int16

С версии: base-2.1

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

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

Краткое описание методов

range :: (Int16, Int16) -> [Int16] Source

index :: (Int16, Int16) -> Int16 -> Int Source

unsafeIndex :: (Int16, Int16) -> Int16 -> Int Source

inRange :: (Int16, Int16) -> Int16 -> Bool Source

rangeSize :: (Int16, Int16) -> Int Source

unsafeRangeSize :: (Int16, Int16) -> Int Source

Ix Int32

Since: base-2.1

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

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

Краткое описание методов

range :: (Int32, Int32) -> [Int32] Source

index :: (Int32, Int32) -> Int32 -> Int Source

unsafeIndex :: (Int32, Int32) -> Int32 -> Int Source

inRange :: (Int32, Int32) -> Int32 -> Bool Source

rangeSize :: (Int32, Int32) -> Int Source

unsafeRangeSize :: (Int32, Int32) -> Int Source

Ix Int64

Since: base-2.1

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

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

Краткое описание методов

range :: (Int64, Int64) -> [Int64] Source

index :: (Int64, Int64) -> Int64 -> Int Source

unsafeIndex :: (Int64, Int64) -> Int64 -> Int Source

inRange :: (Int64, Int64) -> Int64 -> Bool Source

rangeSize :: (Int64, Int64) -> Int Source

unsafeRangeSize :: (Int64, Int64) -> Int Source

Ix Integer

Since: base-2.1

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

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

Краткое описание методов

range :: (Integer, Integer) -> [Integer] Source

index :: (Integer, Integer) -> Integer -> Int Source

unsafeIndex :: (Integer, Integer) -> Integer -> Int Source

inRange :: (Integer, Integer) -> Integer -> Bool Source

rangeSize :: (Integer, Integer) -> Int Source

unsafeRangeSize :: (Integer, Integer) -> Int Source

Ix Natural

Since: base-4.8.0.0

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

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

Методы

range :: (Natural, Natural) -> [Natural] Исходный код

index :: (Natural, Natural) -> Natural -> Int Исходный код

unsafeIndex :: (Natural, Natural) -> Natural -> Int Исходный код

inRange :: (Natural, Natural) -> Natural -> Bool Исходный код

rangeSize :: (Natural, Natural) -> Int Исходный код

unsafeRangeSize :: (Natural, Natural) -> Int Исходный код

Ix Ordering

С: base-2.1

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

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

Методы

range :: (Ordering, Ordering) -> [Ordering] Исходный код

index :: (Ordering, Ordering) -> Ordering -> Int Исходный код

unsafeIndex :: (Ordering, Ordering) -> Ordering -> Int Исходный код

inRange :: (Ordering, Ordering) -> Ordering -> Bool Исходный код

rangeSize :: (Ordering, Ordering) -> Int Исходный код

unsafeRangeSize :: (Ordering, Ordering) -> Int Исходный код

Ix Word

С: base-4.6.0.0

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

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

Методы

range :: (Word, Word) -> [Word] Исходный код

index :: (Word, Word) -> Word -> Int Исходный код

unsafeIndex :: (Word, Word) -> Word -> Int Исходный код

inRange :: (Word, Word) -> Word -> Bool Исходный код

rangeSize :: (Word, Word) -> Int Исходный код

unsafeRangeSize :: (Word, Word) -> Int Исходный код

Ix Word8

С: base-2.1

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

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

Методы

range :: (Word8, Word8) -> [Word8] Исходный код

index :: (Word8, Word8) -> Word8 -> Int Исходный код

unsafeIndex :: (Word8, Word8) -> Word8 -> Int Исходный код

inRange :: (Word8, Word8) -> Word8 -> Bool Исходный код

rangeSize :: (Word8, Word8) -> Int Исходный код

unsafeRangeSize :: (Word8, Word8) -> Int Исходный код

Ix Word16

С: base-2.1

Instance details

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

Краткое описание методов

range :: (Word16, Word16) -> [Word16] Source

index :: (Word16, Word16) -> Word16 -> Int Source

unsafeIndex :: (Word16, Word16) -> Word16 -> Int Source

inRange :: (Word16, Word16) -> Word16 -> Bool Source

rangeSize :: (Word16, Word16) -> Int Source

unsafeRangeSize :: (Word16, Word16) -> Int Source

Ix Word32

Since: base-2.1

Instance details

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

Краткое описание методов

range :: (Word32, Word32) -> [Word32] Source

index :: (Word32, Word32) -> Word32 -> Int Source

unsafeIndex :: (Word32, Word32) -> Word32 -> Int Source

inRange :: (Word32, Word32) -> Word32 -> Bool Source

rangeSize :: (Word32, Word32) -> Int Source

unsafeRangeSize :: (Word32, Word32) -> Int Source

Ix Word64

Since: base-2.1

Instance details

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

Краткое описание методов

range :: (Word64, Word64) -> [Word64] Source

index :: (Word64, Word64) -> Word64 -> Int Source

unsafeIndex :: (Word64, Word64) -> Word64 -> Int Source

inRange :: (Word64, Word64) -> Word64 -> Bool Source

rangeSize :: (Word64, Word64) -> Int Source

unsafeRangeSize :: (Word64, Word64) -> Int Source

Ix ()

Since: base-2.1

Instance details

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

Краткое описание методов

range :: ((), ()) -> [()] Source

index :: ((), ()) -> () -> Int Source

unsafeIndex :: ((), ()) -> () -> Int Source

inRange :: ((), ()) -> () -> Bool Source

rangeSize :: ((), ()) -> Int Source

unsafeRangeSize :: ((), ()) -> Int Source

Ix GeneralCategory

Since: base-2.1

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

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

Методы

range :: (Категория символа, Категория символа) -> [Категория символа] Исходный код

index :: (Категория символа, Категория символа) -> Категория символа -> Целое Исходный код

unsafeIndex :: (Категория символа, Категория символа) -> Категория символа -> Целое Исходный код

inRange :: (Категория символа, Категория символа) -> Категория символа -> Булево Исходный код

rangeSize :: (Категория символа, Категория символа) -> Целое Исходный код

unsafeRangeSize :: (Категория символа, Категория символа) -> Целое Исходный код

Ix Режим ввода-вывода

С версии: base-4.2.0.0

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

Определено в GHC.IO.IOMode

Методы

range :: (Режим ввода-вывода, Режим ввода-вывода) -> [Режим ввода-вывода] Исходный код

index :: (Режим ввода-вывода, Режим ввода-вывода) -> Режим ввода-вывода -> Целое Исходный код

unsafeIndex :: (Режим ввода-вывода, Режим ввода-вывода) -> Режим ввода-вывода -> Целое Исходный код

inRange :: (Режим ввода-вывода, Режим ввода-вывода) -> Режим ввода-вывода -> Булево Исходный код

rangeSize :: (Режим ввода-вывода, Режим ввода-вывода) -> Целое Исходный код

unsafeRangeSize :: (Режим ввода-вывода, Режим ввода-вывода) -> Целое Исходный код

Ix Определённая строгость

С версии: base-4.9.0.0

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

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

Методы

range :: (Определённая строгость, Определённая строгость) -> [Определённая строгость] Исходный код

index :: (Определённая строгость, Определённая строгость) -> Определённая строгость -> Целое Исходный код

unsafeIndex :: (Определённая строгость, Определённая строгость) -> Определённая строгость -> Целое Исходный код

inRange :: (Определённая строгость, Определённая строгость) -> Определённая строгость -> Булево Исходный код

rangeSize :: (Определённая строгость, Определённая строгость) -> Целое Исходный код

unsafeRangeSize :: (Определённая строгость, Определённая строгость) -> Целое Исходный код

Ix Строгость источника

С версии: base-4.9.0.0

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

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

Методы

range :: (SourceStrictness, SourceStrictness) -> [SourceStrictness] Исходный код

index :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Исходный код

unsafeIndex :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Int Исходный код

inRange :: (SourceStrictness, SourceStrictness) -> SourceStrictness -> Bool Исходный код

rangeSize :: (SourceStrictness, SourceStrictness) -> Int Исходный код

unsafeRangeSize :: (SourceStrictness, SourceStrictness) -> Int Исходный код

Ix SourceUnpackedness

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

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

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

Методы

range :: (SourceUnpackedness, SourceUnpackedness) -> [SourceUnpackedness] Исходный код

index :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Исходный код

unsafeIndex :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Int Исходный код

inRange :: (SourceUnpackedness, SourceUnpackedness) -> SourceUnpackedness -> Bool Исходный код

rangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Исходный код

unsafeRangeSize :: (SourceUnpackedness, SourceUnpackedness) -> Int Исходный код

Ix Associativity

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

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

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

Методы

range :: (Associativity, Associativity) -> [Associativity] Исходный код

index :: (Associativity, Associativity) -> Associativity -> Int Исходный код

unsafeIndex :: (Associativity, Associativity) -> Associativity -> Int Исходный код

inRange :: (Associativity, Associativity) -> Associativity -> Bool Исходный код

rangeSize :: (Associativity, Associativity) -> Int Исходный код

unsafeRangeSize :: (Associativity, Associativity) -> Int Исходный код

Ix SeekMode

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

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

Определено в GHC.IO.Device

Методы

range :: (SeekMode, SeekMode) -> [SeekMode] Источник

index :: (SeekMode, SeekMode) -> SeekMode -> Int Источник

unsafeIndex :: (SeekMode, SeekMode) -> SeekMode -> Int Источник

inRange :: (SeekMode, SeekMode) -> SeekMode -> Bool Источник

rangeSize :: (SeekMode, SeekMode) -> Int Источник

unsafeRangeSize :: (SeekMode, SeekMode) -> Int Источник

Ix Void

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

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

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

Методы

range :: (Void, Void) -> [Void] Источник

index :: (Void, Void) -> Void -> Int Источник

unsafeIndex :: (Void, Void) -> Void -> Int Источник

inRange :: (Void, Void) -> Void -> Bool Источник

rangeSize :: (Void, Void) -> Int Источник

unsafeRangeSize :: (Void, Void) -> Int Источник

Ix a => Ix (Down a)

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

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

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

Методы

range :: (Down a, Down a) -> [Down a] Источник

index :: (Down a, Down a) -> Down a -> Int Источник

unsafeIndex :: (Down a, Down a) -> Down a -> Int Источник

inRange :: (Down a, Down a) -> Down a -> Bool Источник

rangeSize :: (Down a, Down a) -> Int Источник

unsafeRangeSize :: (Down a, Down a) -> Int Источник

Ix a => Ix (Identity a)

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

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

Определено в Data.Functor.Identity

Методы

range :: (Identity a, Identity a) -> [Identity a] Исходный код

index :: (Identity a, Identity a) -> Identity a -> Целое Исходный код

unsafeIndex :: (Identity a, Identity a) -> Identity a -> Целое Исходный код

inRange :: (Identity a, Identity a) -> Identity a -> Булево Исходный код

rangeSize :: (Identity a, Identity a) -> Целое Исходный код

unsafeRangeSize :: (Identity a, Identity a) -> Целое Исходный код

(Ix a, Ix b) => Ix (a, b)

С: base-2.1

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

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

Методы

range :: ((a, b), (a, b)) -> [(a, b)] Исходный код

index :: ((a, b), (a, b)) -> (a, b) -> Целое Исходный код

unsafeIndex :: ((a, b), (a, b)) -> (a, b) -> Целое Исходный код

inRange :: ((a, b), (a, b)) -> (a, b) -> Булево Исходный код

rangeSize :: ((a, b), (a, b)) -> Целое Исходный код

unsafeRangeSize :: ((a, b), (a, b)) -> Целое Исходный код

Ix (Proxy s)

С: base-4.7.0.0

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

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

Методы

range :: (Proxy s, Proxy s) -> [Proxy s] Исходный код

index :: (Proxy s, Proxy s) -> Proxy s -> Целое Исходный код

unsafeIndex :: (Proxy s, Proxy s) -> Proxy s -> Целое Исходный код

inRange :: (Proxy s, Proxy s) -> Proxy s -> Булево Исходный код

rangeSize :: (Proxy s, Proxy s) -> Целое Исходный код

unsafeRangeSize :: (Proxy s, Proxy s) -> Целое Исходный код

(Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3)

С: base-2.1

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

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

Методы

range :: ((a1, a2, a3), (a1, a2, a3)) -> [(a1, a2, a3)] Исходный код

index :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Целое Исходный код

unsafeIndex :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Целое Исходный код

inRange :: ((a1, a2, a3), (a1, a2, a3)) -> (a1, a2, a3) -> Булево Исходный код

rangeSize :: ((a1, a2, a3), (a1, a2, a3)) -> Целое Исходный код

unsafeRangeSize :: ((a1, a2, a3), (a1, a2, a3)) -> Целое Исходный код

Ix a => Ix (Const a b)

С: base-4.9.0.0

Детали экземпляра

Определено в Data.Functor.Const

Методы

range :: (Const a b, Const a b) -> [Const a b] Исходный код

index :: (Const a b, Const a b) -> Const a b -> Int Исходный код

unsafeIndex :: (Const a b, Const a b) -> Const a b -> Int Исходный код

inRange :: (Const a b, Const a b) -> Const a b -> Bool Исходный код

rangeSize :: (Const a b, Const a b) -> Int Исходный код

unsafeRangeSize :: (Const a b, Const a b) -> Int Исходный код

(Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4)

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

Детали экземпляра

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

Методы

range :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> [(a1, a2, a3, a4)] Исходный код

index :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Int Исходный код

unsafeIndex :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Int Исходный код

inRange :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> (a1, a2, a3, a4) -> Bool Исходный код

rangeSize :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> Int Исходный код

unsafeRangeSize :: ((a1, a2, a3, a4), (a1, a2, a3, a4)) -> Int Исходный код

(Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5)

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

Детали экземпляра

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

Методы

range :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> [(a1, a2, a3, a4, a5)] Исходный код

index :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Int Исходный код

unsafeIndex :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Int Исходный код

inRange :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> (a1, a2, a3, a4, a5) -> Bool Исходный код

rangeSize :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> Int Исходный код

unsafeRangeSize :: ((a1, a2, a3, a4, a5), (a1, a2, a3, a4, a5)) -> Int Исходный код

data Array i e Исходный код

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

Конструкторы

Array !i !i !Int (Array# e)
Экземпляры
Подробности об экземплярах
Functor (Array i)

Since: 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)

Since: 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)

Since: base-2.1

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

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

Методы

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

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

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

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

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

Since: base-2.1

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

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

Методы

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

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

(Data a, Data b, Ix a) => Data (Array a b)

Since: base-4.8.0.0

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

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

Методы

gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Array a b -> c (Array a b) Исходный код

gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Array a b) Исходный код

toConstr :: Array a b -> Constr Исходный код

dataTypeOf :: Array a b -> DataType Исходный код

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Array a b)) Исходный код

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Array a b)) Исходный код

gmapT :: (forall b0. Data b0 => b0 -> b0) -> Array a b -> Array a b Исходный код

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Array a b -> r Исходный код

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Array a b -> r Исходный код

gmapQ :: (forall d. Data d => d -> u) -> Array a b -> [u] Исходный код

gmapQi :: Int -> (forall d. Data d => d -> u) -> Array a b -> u Исходный код

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Array a b -> m (Array a b) Исходный код

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Array a b -> m (Array a b) Исходный код

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Array a b -> m (Array a b) Исходный код

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

Since: 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)

Since: 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 Исходный код

data STArray s i e Исходный код

Изменяемые, упакованные, нестрогие массивы в ST монаде. Аргументы типов следующие:

  • s: аргумент переменной состояния для типа ST
  • i: тип индекса массива (должен быть экземпляром Ix)
  • e: тип элементов массива.

Конструкторы

STArray !i !i !Int (MutableArray# s e)
Экземпляры
Подробности экземпляров
Eq (STArray s i e)

С версии: base-2.1

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

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

Методы

(==) :: STArray s i e -> STArray s i e -> Bool Исходный код

(/=) :: STArray s i e -> STArray s i e -> Bool Исходный код

arrEleBottom :: a Исходный код

array Исходный код

Аргументы

:: Ix i
=> (i, i)

пара границ, каждая из которых является типом индекса массива. Эти границы — наименьший и наибольший индексы в массиве, в этом порядке. Например, вектор с началом с единицы длиной 10 имеет границы (1,10), а матрица с началом с единицы 10 на 10 имеет границы ((1,1),(10,10)).

-> [(i, e)]

список ассоциаций вида (индекс, значение). Обычно этот список будет выражен через понимание. Ассоциация (i, x) определяет значение массива в индексе i как x.

-> Array i e

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

Массив является неопределённым (т.е. bottom), если какой-либо индекс в списке выходит за пределы границ. Отчёт Haskell 2010 дополнительно уточняет, что если в списке есть две ассоциации с одинаковым индексом, то значение в этом индексе неопределённо (т.е. bottom). Однако в реализации GHC значение в таком индексе — значение последней ассоциации с этим индексом в списке.

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

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

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

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

listArray :: Ix i => (i, i) -> [e] -> Array i e Исходный код

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

(!) :: Ix i => Array i e -> i -> e infixl 9 Исходный код

Значение по данному индексу в массиве.

safeRangeSize :: Ix i => (i, i) -> Int Исходный код

negRange :: Int Исходный код

safeIndex :: Ix i => (i, i) -> Int -> i -> Int Исходный код

badSafeIndex :: Int -> Int -> Int Исходный код

bounds :: Array i e -> (i, i) Исходный код

Границы, с которыми был создан массив.

numElements :: Array i e -> Int Исходный код

Количество элементов в массиве.

numElementsSTArray :: STArray s i e -> Int Исходный код

indices :: Ix i => Array i e -> [i] Исходный код

Список индексов массива в порядке возрастания.

elems :: Array i e -> [e] Исходный код

Список элементов массива в порядке индексов.

assocs :: Ix i => Array i e -> [(i, e)] Исходный код

Список ассоциаций массива в порядке индексов.

accumArray Исходный код

Аргументы

:: Ix i
=> (e -> a -> e)

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

-> e

начальное значение

-> (i, i)

пределы массива

-> [(i, a)]

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

-> Array i e

Функция accumArray обрабатывает повторяющиеся индексы в списке ассоциаций, используя функцию накопления, которая объединяет значения ассоциаций с одинаковым индексом.

Например, задан список значений некоторого типа индекса, 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]

accumArray является строгой для каждого результата применения функции накопления, хотя и ленивой для начального значения. Таким образом, в отличие от массивов, построенных с помощью array, накопленные массивы обычно не должны быть рекурсивными.

adjust :: (e -> a -> e) -> MutableArray# s e -> (Int, a) -> STRep s b -> STRep s b Source

(//) :: Ix i => Array i e -> [(i, e)] -> Array i e infixl 9 Source

Создаёт массив, идентичный первому аргументу, за исключением того, что он обновлён ассоциациями из правого аргумента. Например, если m — это матрица 1-го начала, n по n, то

m//[((i,i), 0) | i <- [1..n]]

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

Повторяющиеся индексы в списке ассоциаций обрабатываются как для array: Haskell 2010 определяет, что результирующий массив не определён (т. е. является неопределённым), но реализация GHC использует последнюю ассоциацию для каждого индекса.

accum :: Ix i => (e -> a -> e) -> Array i e -> [(i, a)] -> Array i e Source

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

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

accum является строгой для всех результатов применения накопления. Однако, она ленива для начальных значений массива.

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

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

ixmap позволяет выполнять преобразования индексов массива. Можно считать его композицией функций справа с отображением, которое изначально воплощает массив.

Аналогичное преобразование значений массива можно достичь с помощью fmap из экземпляра Array класса Functor.

eqArray :: (Ix i, Eq e) => Array i e -> Array i e -> Bool Source

cmpArray :: (Ix i, Ord e) => Array i e -> Array i e -> Ordering Source

cmpIntArray :: Ord e => Array Int e -> Array Int e -> Ordering Source

newSTArray :: Ix i => (i, i) -> e -> ST s (STArray s i e) Source

boundsSTArray :: STArray s i e -> (i, i) Source

readSTArray :: Ix i => STArray s i e -> i -> ST s e Source

writeSTArray :: Ix i => STArray s i e -> i -> e -> ST s () Source

freezeSTArray :: STArray s i e -> ST s (Array i e) Source

thawSTArray :: Array i e -> ST s (STArray s i e) Source

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

Левостороннее свёртка по элементам

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

Строгая левосторонняя свёртка по элементам

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

Левосторонняя свёртка по элементам без начального значения

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

Правосторонняя свёртка по элементам

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

Строгая правосторонняя свёртка по элементам

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

Правосторонняя свёртка по элементам без начального значения

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

fill :: MutableArray# s e -> (Int, e) -> STRep s a -> STRep s a Source

done :: i -> i -> Int -> MutableArray# s e -> STRep s (Array i e) Source

unsafeArray :: Ix i => (i, i) -> [(Int, e)] -> Array i e Source

unsafeArray' :: (i, i) -> Int -> [(Int, e)] -> Array i e Source

lessSafeIndex :: Ix i => (i, i) -> Int -> i -> Int Source

unsafeAt :: Array i e -> Int -> e Source

unsafeReplace :: Array i e -> [(Int, e)] -> Array i e Source

unsafeAccumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(Int, a)] -> Array i e Source

unsafeAccumArray' :: (e -> a -> e) -> e -> (i, i) -> Int -> [(Int, a)] -> Array i e Source

unsafeAccum :: (e -> a -> e) -> Array i e -> [(Int, a)] -> Array i e Source

unsafeReadSTArray :: STArray s i e -> Int -> ST s e Source

unsafeWriteSTArray :: STArray s i e -> Int -> e -> ST s () Source

unsafeFreezeSTArray :: STArray s i e -> ST s (Array i e) Source

unsafeThawSTArray :: Array i e -> ST s (STArray s 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/base-4.14.1.0/GHC-Arr.html

Spec-Zone.ru

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