Copyright | (c) Alexey Kuleshevich 2018 |
---|---|
License | BSD3 |
Maintainer | Alexey Kuleshevich <lehins@yandex.ru> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- class Manifest r ix e => Mutable r ix e
- data family MArray s r ix e :: *
- msize :: Mutable r ix e => MArray s r ix e -> ix
- new :: (Mutable r ix e, PrimMonad m) => ix -> m (MArray (PrimState m) r ix e)
- thaw :: (Mutable r ix e, PrimMonad m) => Array r ix e -> m (MArray (PrimState m) r ix e)
- freeze :: (Mutable r ix e, PrimMonad m) => Comp -> MArray (PrimState m) r ix e -> m (Array r ix e)
- read :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> m (Maybe e)
- read' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> m e
- write :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> e -> m Bool
- write' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> e -> m ()
- modify :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> (e -> e) -> ix -> m Bool
- modify' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> (e -> e) -> ix -> m ()
- swap :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> ix -> m Bool
- swap' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> ix -> m ()
- data RealWorld
- computeInto :: (Load r' ix e, Mutable r ix e) => MArray RealWorld r ix e -> Array r' ix e -> IO ()
Documentation
class Manifest r ix e => Mutable r ix e Source #
Instances
data family MArray s r ix e :: * Source #
Instances
data MArray s U ix e Source # | |
Defined in Data.Massiv.Array.Manifest.Unboxed | |
data MArray s S ix e Source # | |
Defined in Data.Massiv.Array.Manifest.Storable | |
data MArray s P ix e Source # | |
Defined in Data.Massiv.Array.Manifest.Primitive | |
data MArray s N ix e Source # | |
Defined in Data.Massiv.Array.Manifest.BoxedNF | |
data MArray s B ix e Source # | |
Defined in Data.Massiv.Array.Manifest.BoxedStrict |
new :: (Mutable r ix e, PrimMonad m) => ix -> m (MArray (PrimState m) r ix e) Source #
Initialize a new mutable array. Negative size will result in an empty array.
thaw :: (Mutable r ix e, PrimMonad m) => Array r ix e -> m (MArray (PrimState m) r ix e) Source #
O(n) - Yield a mutable copy of the immutable array
freeze :: (Mutable r ix e, PrimMonad m) => Comp -> MArray (PrimState m) r ix e -> m (Array r ix e) Source #
O(n) - Yield an immutable copy of the mutable array
read :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> m (Maybe e) Source #
O(1) - Lookup an element in the mutable array. Return Nothing
when index is out of bounds.
read' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> m e Source #
O(1) - Same as read
, but throws an error if index is out of bounds.
write :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> e -> m Bool Source #
O(1) - Write an element into the cell of a mutable array. Returns False
when index is out
of bounds.
write' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> e -> m () Source #
O(1) - Same as write
, but throws an error if index is out of bounds.
modify :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> (e -> e) -> ix -> m Bool Source #
O(1) - Modify an element in the cell of a mutable array with a supplied function. Returns
False
when index is out of bounds.
modify' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> (e -> e) -> ix -> m () Source #
O(1) - Same as modify
, but throws an error if index is out of bounds.
swap :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> ix -> m Bool Source #
O(1) - Swap two elements in a mutable array by supplying their indices. Returns False
when
either one of the indices is out of bounds.
swap' :: (Mutable r ix e, PrimMonad m) => MArray (PrimState m) r ix e -> ix -> ix -> m () Source #
O(1) - Same as swap
, but throws an error if index is out of bounds.
Computation
RealWorld
is deeply magical. It is primitive, but it is not
unlifted (hence ptrArg
). We never manipulate values of type
RealWorld
; it's only used in the type system, to parameterise State#
.
:: (Load r' ix e, Mutable r ix e) | |
=> MArray RealWorld r ix e | Target Array |
-> Array r' ix e | Array to load |
-> IO () |
Compute an Array while loading the results into the supplied mutable target array. Sizes of both arrays must agree, otherwise error.
Since: massiv-0.1.3
Generate (experimental)
Functions in this section has been removed until better times due to a known bug https://github.com/lehins/massiv/issues/24