bitwise-0.1.1.1: fast multi-dimensional unboxed bit packed Bool arrays

Copyright(c) Claude Heiland-Allen 2012
LicenseBSD3
Maintainerclaude@mathr.co.uk
Stabilityunstable
Portabilityuses ST
Safe HaskellNone
LanguageHaskell98

Data.Array.BitArray.ST

Contents

Description

Unboxed mutable bit arrays in the ST monad.

Synopsis

Documentation

data STBitArray s i Source

The type of mutable bit arrays.

MArray-like interface.

getBounds :: Ix i => STBitArray s i -> ST s (i, i) Source

Get the bounds of a bit array.

newArray Source

Arguments

:: Ix i 
=> (i, i)

bounds

-> Bool

initial value

-> ST s (STBitArray s i) 

Create a new array filled with an initial value.

newArray_ Source

Arguments

:: Ix i 
=> (i, i)

bounds

-> ST s (STBitArray s i) 

Create a new array filled with a default initial value (False).

newListArray Source

Arguments

:: Ix i 
=> (i, i)

bounds

-> [Bool]

elems

-> ST s (STBitArray s i) 

Create a new array filled with values from a list.

readArray :: Ix i => STBitArray s i -> i -> ST s Bool Source

Read from an array at an index.

writeArray :: Ix i => STBitArray s i -> i -> Bool -> ST s () Source

Write to an array at an index.

mapArray :: Ix i => (Bool -> Bool) -> STBitArray s i -> ST s (STBitArray s i) Source

Alias for map.

mapIndices Source

Arguments

:: (Ix i, Ix j) 
=> (i, i)

new bounds

-> (i -> j)

index transformation

-> STBitArray s j

source array

-> ST s (STBitArray s i) 

Create a new array by reading from another.

getElems :: Ix i => STBitArray s i -> ST s [Bool] Source

Get a list of all elements of an array.

getAssocs :: Ix i => STBitArray s i -> ST s [(i, Bool)] Source

Get a list of all (index, element) pairs.

Conversion to/from immutable bit arrays.

freeze :: Ix i => STBitArray s i -> ST s (BitArray i) Source

Snapshot the array into an immutable form.

thaw :: Ix i => BitArray i -> ST s (STBitArray s i) Source

Convert an array from immutable form.

Construction.

copy :: Ix i => STBitArray s i -> ST s (STBitArray s i) Source

Copy an array.

fill :: Ix i => STBitArray s i -> Bool -> ST s () Source

Fill an array with a uniform value.

Short-circuiting reductions.

or :: Ix i => STBitArray s i -> ST s Bool Source

Short-circuit bitwise reduction: True when any bit is True.

and :: Ix i => STBitArray s i -> ST s Bool Source

Short-circuit bitwise reduction: False when any bit is False.

isUniform :: Ix i => STBitArray s i -> ST s (Maybe Bool) Source

Short-circuit bitwise reduction: Nothing when any bits differ, Just when all bits are the same.

elemIndex :: Bool -> STBitArray s Int -> ST s (Maybe Int) Source

Look up index of first matching bit.

Note that the index type is limited to Int because there is no unindex method in the Ix class.

Aggregate operations.

fold Source

Arguments

:: Ix i 
=> (Bool -> Bool -> Bool)

operator

-> STBitArray s i 
-> ST s (Maybe Bool) 

Bitwise reduction with an associative commutative boolean operator. Implementation lifts from Bool to Bits and folds large chunks at a time. Each bit is used as a source exactly once.

map :: Ix i => (Bool -> Bool) -> STBitArray s i -> ST s (STBitArray s i) Source

Bitwise map. Implementation lifts from Bool to Bits and maps large chunks at a time.

zipWith :: Ix i => (Bool -> Bool -> Bool) -> STBitArray s i -> STBitArray s i -> ST s (STBitArray s i) Source

Bitwise zipWith. Implementation lifts from Bool to Bits and combines large chunks at a time.

The bounds of the source arrays must be identical.

popCount :: Ix i => STBitArray s i -> ST s Int Source

Count set bits.

Unsafe.

unsafeReadArray :: Ix i => STBitArray s i -> i -> ST s Bool Source

Read from an array at an index without bounds checking. Unsafe.

unsafeGetElems :: Ix i => STBitArray s i -> ST s [Bool] Source

Get a list of all elements of an array without copying. Unsafe when the source array can be modified later.

unsafeFreeze :: Ix i => STBitArray s i -> ST s (BitArray i) Source

Snapshot the array into an immutable form. Unsafe when the source array can be modified later.

unsafeThaw :: Ix i => BitArray i -> ST s (STBitArray s i) Source

Convert an array from immutable form. Unsafe to modify the result unless the source array is never used later.