|Maintainer||Bulat Ziganshin <Bulat.Ziganshin@gmail.com>|
|Functional arrays with constant-time update.
|Diff array types
Diff arrays have an immutable interface, but rely on internal
updates in place to provide fast functional update operator
When the // operator is applied to a diff array, its contents
are physically updated in place. The old array silently changes
its representation without changing the visible behavior:
it stores a link to the new current array along with the
difference to be applied to get the old contents.
So if a diff array is used in a single-threaded style,
i.e. after // application the old version is no longer used,
a!i takes O(1) time and a // d takes O(length d).
Accessing elements of older versions gradually becomes slower.
Updating an array which is not current makes a physical copy.
The resulting array is unlinked from the old family. So you
can obtain a version which is guaranteed to be current and
thus have fast element access by a // .
|data IOToDiffArray a i e ||Source|
|An arbitrary MArray type living in the IO monad can be converted
to a diff array.
|IArray DiffArray e|
|Unboxed e => IArray DiffUArray e|
|HasBounds a => HasBounds (IOToDiffArray a)|
|(Ix i, Eq i, Eq e) => Eq (DiffArray i e)|
|(Ix i, Eq i, Eq e, Unboxed e, HasDefaultValue e) => Eq (DiffUArray i e)|
|(Ix i, Ord i, Ord e) => Ord (DiffArray i e)|
|(Ix i, Ord i, Ord e, Unboxed e, HasDefaultValue e) => Ord (DiffUArray i e)|
|(Ix i, Show i, Show e) => Show (DiffArray i e)|
|(Ix i, Show i, Show e, Unboxed e, HasDefaultValue e) => Show (DiffUArray i e)|
|Type synonyms for the two most important IO array types.
|Fully polymorphic lazy boxed diff array.
|Strict unboxed diff array, working only for elements
of primitive types but more compact and usually faster than DiffArray.
|Overloaded immutable array interface
|Module Data.ArrayBZ.Internals.IArray provides the interface
of diff arrays. They are instances of class IArray.
|These are really internal functions, but you will need them
to make further IArray instances of various diff array types
(for either more MArray types or more unboxed element types).
|Produced by Haddock version 2.1.0|