HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulehw-fingertree-0.1.2.1Haskell2010

HaskellWorks.Data.PriorityQueue.FingerTree

Min-priority queues implemented using the FingerTree type, following section 4.6 of

These have the same big-O complexity as skew heap implementations, but are approximately an order of magnitude slower. On the other hand, they are stable, so they can be used for fair queueing. They are also shallower, so that fmap consumes less space.

An amortized running time is given for each operation, with n referring to the size of the priority queue. These bounds hold even in a persistent (shared) setting.

Note: Many of these operations have the same names as similar operations on lists in the Prelude. The ambiguity may be resolved using either qualification or the hiding clause.

  • 1 type
  • 9 values
newtypenewtype PQueue k v
#

Priority queues.

Instances4Functor, Foldable, Semigroup, Monoid
  • Ord k => Functor (PQueue k)Defined in hw-fingertree-0.1.2.1 · HaskellWorks.Data.PriorityQueue.FingerTree
  • Ord k => Foldable (PQueue k)Defined in hw-fingertree-0.1.2.1 · HaskellWorks.Data.PriorityQueue.FingerTree
  • Ord k => Semigroup (PQueue k v)Defined in hw-fingertree-0.1.2.1 · HaskellWorks.Data.PriorityQueue.FingerTree
  • Ord k => Monoid (PQueue k v)Defined in hw-fingertree-0.1.2.1 · HaskellWorks.Data.PriorityQueue.FingerTree

Construction

6 declarations
valueunion :: Ord k => PQueue k v -> PQueue k v -> PQueue k v
#

O(log(min(n1,n2))). Concatenate two priority queues. union is associative, with identity empty.

If there are entries with the same priority in both arguments, minView of union xs ys will return those from xs before those from ys.

valueinsert :: Ord k => k -> v -> PQueue k v -> PQueue k v
#

O(log n). Add a (priority, value) pair to the front of a priority queue.

If q contains entries with the same priority k, minView of insert k v q will return them after this one.

valueadd :: Ord k => k -> v -> PQueue k v -> PQueue k v
#

O(log n). Add a (priority, value) pair to the back of a priority queue.

If q contains entries with the same priority k, minView of add k v q will return them before this one.

valuefromList :: Ord k => [(k, v)] -> PQueue k v
#

O(n). Create a priority queue from a finite list of priorities and values.

Deconstruction

3 declarations
valueminViewWithKey :: Ord k => PQueue k v -> Maybe ((k, v), PQueue k v)
#

O(1) for the element, O(log(n)) for the reduced queue. Returns Nothing for an empty map, or the minimal (priority, value) pair together with the rest of the priority queue.