Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
KMerge.Heap
Description
Mutable heap for k-merge algorithm.
This data-structure represents a min-heap with the root node *removed*. (internally the filling of root value and sifting down is delayed).
Also there isn't *insert* operation, i.e. the heap can only shrink.
Other heap usual heap opeartions are *create-heap*, *extract-min* and *replace*.
However, as the MutableHeap
always represents a heap with its root (minimum value)
extracted, *extract-min* is "fused" to other operations.
Synopsis
- data MutableHeap s a = MH !(PrimVar s Int) !(SmallMutableArray s a)
- newMutableHeap :: forall a m. (PrimMonad m, Ord a) => NonEmpty a -> m (MutableHeap (PrimState m) a, a)
- replaceRoot :: forall a m. (PrimMonad m, Ord a) => MutableHeap (PrimState m) a -> a -> m a
- extract :: forall a m. (PrimMonad m, Ord a) => MutableHeap (PrimState m) a -> m (Maybe a)
Documentation
data MutableHeap s a Source #
Mutable heap for k-merge algorithm.
Constructors
MH | |
Fields
|
newMutableHeap :: forall a m. (PrimMonad m, Ord a) => NonEmpty a -> m (MutableHeap (PrimState m) a, a) Source #
Create new heap, and immediately extract its minimum value.
replaceRoot :: forall a m. (PrimMonad m, Ord a) => MutableHeap (PrimState m) a -> a -> m a Source #
Replace the minimum-value, and immediately extract the new minimum value.