array-builder- Builders for arrays
Safe HaskellNone




data Builder s a Source #

Builder for an array of boxed elements. This type is appropriate when constructing an array of unknown size in an effectful (ST or IO) setting. In a non-effectful setting, consider the Builder from Data.Builder instead.

A Builder must be used linearly. The type system does not enforce this, so users must be careful when handling a Builder.


Builder !(SmallMutableArray s a) !Int !Int !(Chunks a) 

new :: ST s (Builder s a) Source #

Create a new Builder with no elements in it.

new1 :: a -> ST s (Builder s a) Source #

Create a new Builder with a single element. Useful when builder creation is immidiately followed by push. Note that:

new >>= push x ≡ new1 x

But new1 performs slightly better.

push Source #


:: a

Element to push onto the end

-> Builder s a

Builder, do not reuse this after pushing onto it

-> ST s (Builder s a)

New builder

Push an element onto the end of the builder. This is not strict in the element, so force it before pushing it on to the builder if doing so is needed to prevent space leaks.

freeze Source #


:: Builder s a

Builder, do not reuse after freezing

-> ST s (Chunks a) 

Convert a Builder to Chunks. The Builder must not be reused after this operation.