Module

Data.Array.ST

Package
purescript-arrays
Repository
purescript/purescript-arrays

Helper functions for working with mutable arrays using the ST effect.

This module can be used when performance is important and mutation is a local effect.

#STArray Source

data STArray :: Type -> Type -> Type

A reference to a mutable array.

The first type parameter represents the memory region which the array belongs to. The second type parameter defines the type of elements of the mutable array.

The runtime representation of a value of type STArray h a is the same as that of Array a, except that mutation is allowed.

#Assoc Source

type Assoc a = { index :: Int, value :: a }

An element and its index.

#runSTArray Source

runSTArray :: forall r a. (forall h. Eff (st :: ST h | r) (STArray h a)) -> Eff r (Array a)

DEPRECATED: Use unsafeFreeze together with runST instead.

Freeze a mutable array, creating an immutable array. Use this function as you would use runST to freeze a mutable reference.

The rank-2 type prevents the reference from escaping the scope of runSTArray.

#withArray Source

withArray :: forall h r b a. (STArray h a -> Eff (st :: ST h | r) b) -> Array a -> Eff (st :: ST h | r) (Array a)

Perform an effect requiring a mutable array on a copy of an immutable array, safely returning the result as an immutable array.

#emptySTArray Source

emptySTArray :: forall r h a. Eff (st :: ST h | r) (STArray h a)

Create an empty mutable array.

#peekSTArray Source

peekSTArray :: forall r h a. STArray h a -> Int -> Eff (st :: ST h | r) (Maybe a)

Read the value at the specified index in a mutable array.

#pokeSTArray Source

pokeSTArray :: forall r h a. STArray h a -> Int -> a -> Eff (st :: ST h | r) Boolean

Change the value at the specified index in a mutable array.

#pushSTArray Source

pushSTArray :: forall r h a. STArray h a -> a -> Eff (st :: ST h | r) Int

Append an element to the end of a mutable array. Returns the new length of the array.

#modifySTArray Source

modifySTArray :: forall r h a. STArray h a -> Int -> (a -> a) -> Eff (st :: ST h | r) Boolean

Mutate the element at the specified index using the supplied function.

#pushAllSTArray Source

pushAllSTArray :: forall r h a. STArray h a -> Array a -> Eff (st :: ST h | r) Int

Append the values in an immutable array to the end of a mutable array. Returns the new length of the mutable array.

#spliceSTArray Source

spliceSTArray :: forall r h a. STArray h a -> Int -> Int -> Array a -> Eff (st :: ST h | r) (Array a)

Remove and/or insert elements from/into a mutable array at the specified index.

#freeze Source

freeze :: forall r h a. STArray h a -> Eff (st :: ST h | r) (Array a)

Create an immutable copy of a mutable array.

#thaw Source

thaw :: forall r h a. Array a -> Eff (st :: ST h | r) (STArray h a)

Create a mutable copy of an immutable array.

#unsafeFreeze Source

unsafeFreeze :: forall h r a. STArray h a -> Eff (st :: ST h | r) (Array a)

O(1). Convert a mutable array to an immutable array, without copying. The mutable array must not be mutated afterwards.

#toAssocArray Source

toAssocArray :: forall r h a. STArray h a -> Eff (st :: ST h | r) (Array (Assoc a))

Create an immutable copy of a mutable array, where each element is labelled with its index in the original array.