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.

#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.

#emptySTArray Source

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

Create an empty 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.

#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.

#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.

#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.

#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.

#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.