basement-0.0.15: Foundation scrap box of array & string
License BSD-style
Maintainer Vincent Hanquez <vincent@snarc.org>
Stability experimental
Portability portable
Safe Haskell None
Language Haskell2010

Basement.BoxedArray

Description

Simple boxed array abstraction

Synopsis

Documentation

data Array a Source #

Array of a

Instances

Instances details
Functor Array Source #
Instance details

Defined in Basement.BoxedArray

IsList ( Array ty) Source #
Instance details

Defined in Basement.BoxedArray

Associated Types

type Item ( Array ty) Source #

Eq a => Eq ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

Data ty => Data ( Array ty) Source #
Instance details

Defined in Basement.BoxedArray

Methods

gfoldl :: ( forall d b. Data d => c (d -> b) -> d -> c b) -> ( forall g. g -> c g) -> Array ty -> c ( Array ty) Source #

gunfold :: ( forall b r. Data b => c (b -> r) -> c r) -> ( forall r. r -> c r) -> Constr -> c ( Array ty) Source #

toConstr :: Array ty -> Constr Source #

dataTypeOf :: Array ty -> DataType Source #

dataCast1 :: Typeable t => ( forall d. Data d => c (t d)) -> Maybe (c ( Array ty)) Source #

dataCast2 :: Typeable t => ( forall d e. ( Data d, Data e) => c (t d e)) -> Maybe (c ( Array ty)) Source #

gmapT :: ( forall b. Data b => b -> b) -> Array ty -> Array ty Source #

gmapQl :: (r -> r' -> r) -> r -> ( forall d. Data d => d -> r') -> Array ty -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> ( forall d. Data d => d -> r') -> Array ty -> r Source #

gmapQ :: ( forall d. Data d => d -> u) -> Array ty -> [u] Source #

gmapQi :: Int -> ( forall d. Data d => d -> u) -> Array ty -> u Source #

gmapM :: Monad m => ( forall d. Data d => d -> m d) -> Array ty -> m ( Array ty) Source #

gmapMp :: MonadPlus m => ( forall d. Data d => d -> m d) -> Array ty -> m ( Array ty) Source #

gmapMo :: MonadPlus m => ( forall d. Data d => d -> m d) -> Array ty -> m ( Array ty) Source #

Ord a => Ord ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

Show a => Show ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

Semigroup ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

Monoid ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

NormalForm a => NormalForm ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

PrimType ty => From ( UArray ty) ( Array ty) Source #
Instance details

Defined in Basement.From

PrimType ty => From ( Array ty) ( Block ty) Source #
Instance details

Defined in Basement.From

PrimType ty => From ( Array ty) ( UArray ty) Source #
Instance details

Defined in Basement.From

( NatWithinBound ( CountOf ty) n, KnownNat n, PrimType ty) => TryFrom ( Array ty) ( BlockN n ty) Source #
Instance details

Defined in Basement.From

( NatWithinBound Int n, PrimType ty) => From ( BlockN n ty) ( Array ty) Source #
Instance details

Defined in Basement.From

type Item ( Array ty) Source #
Instance details

Defined in Basement.BoxedArray

type Item ( Array ty) = ty

data MArray a st Source #

Mutable Array of a

mutableLength :: MArray ty st -> Int Source #

return the numbers of elements in a mutable array

copy :: Array ty -> Array ty Source #

Copy the element to a new element array

unsafeCopyAtRO Source #

Arguments

:: PrimMonad prim
=> MArray ty ( PrimState prim)

destination array

-> Offset ty

offset at destination

-> Array ty

source array

-> Offset ty

offset at source

-> CountOf ty

number of elements to copy

-> prim ()

Copy n sequential elements from the specified offset in a source array to the specified position in a destination array.

This function does not check bounds. Accessing invalid memory can return unpredictable and invalid values.

thaw :: PrimMonad prim => Array ty -> prim ( MArray ty ( PrimState prim)) Source #

Thaw an array to a mutable array.

the array is not modified, instead a new mutable array is created and every values is copied, before returning the mutable array.

new :: PrimMonad prim => CountOf ty -> prim ( MArray ty ( PrimState prim)) Source #

Create a new mutable array of size @n.

all the cells are uninitialized and could contains invalid values.

All mutable arrays are allocated on a 64 bits aligned addresses and always contains a number of bytes multiples of 64 bits.

create Source #

Arguments

:: forall ty. CountOf ty

the size of the array

-> ( Offset ty -> ty)

the function that set the value at the index

-> Array ty

the array created

Create a new array of size n by settings each cells through the function f.

unsafeFreeze :: PrimMonad prim => MArray ty ( PrimState prim) -> prim ( Array ty) Source #

Freeze a mutable array into an array.

the MArray must not be changed after freezing.

unsafeThaw :: PrimMonad prim => Array ty -> prim ( MArray ty ( PrimState prim)) Source #

Thaw an immutable array.

The Array must not be used after thawing.

unsafeWrite :: PrimMonad prim => MArray ty ( PrimState prim) -> Offset ty -> ty -> prim () Source #

write to a cell in a mutable array without bounds checking.

Writing with invalid bounds will corrupt memory and your program will become unreliable. use write if unsure.

unsafeRead :: PrimMonad prim => MArray ty ( PrimState prim) -> Offset ty -> prim ty Source #

read from a cell in a mutable array without bounds checking.

Reading from invalid memory can return unpredictable and invalid values. use read if unsure.

unsafeIndex :: Array ty -> Offset ty -> ty Source #

Return the element at a specific index from an array without bounds checking.

Reading from invalid memory can return unpredictable and invalid values. use index if unsure.

write :: PrimMonad prim => MArray ty ( PrimState prim) -> Offset ty -> ty -> prim () Source #

Write to a cell in a mutable array.

If the index is out of bounds, an error is raised.

read :: PrimMonad prim => MArray ty ( PrimState prim) -> Offset ty -> prim ty Source #

read a cell in a mutable array.

If the index is out of bounds, an error is raised.

index :: Array ty -> Offset ty -> ty Source #

Return the element at a specific index from an array.

If the index @n is out of bounds, an error is raised.

sortBy :: forall ty. (ty -> ty -> Ordering ) -> Array ty -> Array ty Source #

filter :: forall ty. (ty -> Bool ) -> Array ty -> Array ty Source #

foldl' :: (a -> ty -> a) -> a -> Array ty -> a Source #

foldr :: (ty -> a -> a) -> a -> Array ty -> a Source #

foldl1' :: (ty -> ty -> ty) -> NonEmpty ( Array ty) -> ty Source #

foldr1 :: (ty -> ty -> ty) -> NonEmpty ( Array ty) -> ty Source #