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

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

Data.Array.BitArray.IO

Contents

Description

Unboxed mutable bit arrays in the IO monad.

Synopsis

Documentation

data IOBitArray i Source #

The type of mutable bit arrays in the IO monad.

MArray-like interface.

getBounds :: Ix i => IOBitArray i -> IO (i, i) Source #

Get the bounds of a bit array.

newArray Source #

Arguments

:: Ix i 
=> (i, i)

bounds

-> Bool

initial value

-> IO (IOBitArray i) 

Create a new array filled with an initial value.

newArray_ Source #

Arguments

:: Ix i 
=> (i, i)

bounds

-> IO (IOBitArray i) 

Create a new array filled with unspecified initial values.

newListArray Source #

Arguments

:: Ix i 
=> (i, i)

bounds

-> [Bool]

elems

-> IO (IOBitArray i) 

Create a new array filled with values from a list.

readArray :: Ix i => IOBitArray i -> i -> IO Bool Source #

Read from an array at an index.

writeArray :: Ix i => IOBitArray i -> i -> Bool -> IO () Source #

Write to an array at an index.

mapArray :: Ix i => (Bool -> Bool) -> IOBitArray i -> IO (IOBitArray i) Source #

Alias for map.

mapIndices Source #

Arguments

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

new bounds

-> (i -> j)

index transformation

-> IOBitArray j

source array

-> IO (IOBitArray i) 

Create a new array by reading from another.

getElems :: Ix i => IOBitArray i -> IO [Bool] Source #

Get a list of all elements of an array.

getAssocs :: Ix i => IOBitArray i -> IO [(i, Bool)] Source #

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

Conversion to/from immutable bit arrays.

freeze :: Ix i => IOBitArray i -> IO (BitArray i) Source #

Snapshot the array into an immutable form.

thaw :: Ix i => BitArray i -> IO (IOBitArray i) Source #

Convert an array from immutable form.

Construction

copy :: Ix i => IOBitArray i -> IO (IOBitArray i) Source #

Copy an array.

fill :: Ix i => IOBitArray i -> Bool -> IO () Source #

Fill an array with a uniform value.

Short-circuiting reductions.

or :: Ix i => IOBitArray i -> IO Bool Source #

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

and :: Ix i => IOBitArray i -> IO Bool Source #

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

isUniform :: Ix i => IOBitArray i -> IO (Maybe Bool) Source #

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

elemIndex :: Bool -> IOBitArray Int -> IO (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

-> IOBitArray i 
-> IO (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) -> IOBitArray i -> IO (IOBitArray i) Source #

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

zipWith :: Ix i => (Bool -> Bool -> Bool) -> IOBitArray i -> IOBitArray i -> IO (IOBitArray 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 => IOBitArray i -> IO Int Source #

Count set bits.

Unsafe.

unsafeReadArray :: Ix i => IOBitArray i -> i -> IO Bool Source #

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

unsafeGetElems :: Ix i => IOBitArray i -> IO [Bool] Source #

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

unsafeFreeze :: Ix i => IOBitArray i -> IO (BitArray i) Source #

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

unsafeThaw :: Ix i => BitArray i -> IO (IOBitArray i) Source #

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