PSQueue-1.2.2: src/Data/PSQueue.hs
{- |
A /priority search queue/ (henceforth /queue/) efficiently supports the
operations of both a search tree and a priority queue. A 'Binding' is a
product of a key and a priority. Bindings can be inserted, deleted, modified
and queried in logarithmic time, and the binding with the least priority can be
retrieved in constant time. A queue can be built from a list of bindings,
sorted by keys, in linear time.
This implementation is due to Ralf Hinze.
* [Hinze, R., A Simple Implementation Technique for Priority Search Queues, ICFP 2001, pp. 110-121](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.1149)
-}
-- Some modifications by Scott Dillard
module Data.PSQueue
(
-- * Binding Type
Binding((:->))
, key
, prio
-- * Priority Search Queue Type
, PSQ
-- * Query
, size
, null
, lookup
-- * Construction
, empty
, singleton
-- * Insertion
, insert
, insertWith
-- * Delete/Update
, delete
, adjust
, adjustWithKey
, update
, updateWithKey
, alter
-- * Conversion
, keys
, toList
, toAscList
, toDescList
, fromList
, fromAscList
, fromDistinctAscList
-- * Priority Queue
, findMin
, deleteMin
, minView
, atMost
, atMostRange
-- * Fold
, foldr
, foldl
) where
import Prelude ()
import Data.PSQueue.Internal