Copyright | Copyright (c) 2009-2015, David Sorokin <david.sorokin@gmail.com> |
---|---|
License | BSD3 |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Tested with: GHC 7.10.1
An imperative heap-based priority queue.
- data PriorityQueue a
- queueNull :: PriorityQueue a -> IO Bool
- queueCount :: PriorityQueue a -> IO Int
- newQueue :: IO (PriorityQueue a)
- enqueue :: PriorityQueue a -> Double -> a -> IO ()
- dequeue :: PriorityQueue a -> IO ()
- queueFront :: PriorityQueue a -> IO (Double, a)
- queueDelete :: Eq a => PriorityQueue a -> a -> IO Bool
- queueDeleteBy :: PriorityQueue a -> (a -> Bool) -> IO (Maybe a)
- remove :: Eq a => PriorityQueue a -> a -> IO Bool
- removeBy :: PriorityQueue a -> (a -> Bool) -> IO Bool
Documentation
data PriorityQueue a Source
The PriorityQueue
type represents an imperative heap-based
priority queue.
queueNull :: PriorityQueue a -> IO Bool Source
Test whether the priority queue is empty.
queueCount :: PriorityQueue a -> IO Int Source
Return the number of elements in the priority queue.
newQueue :: IO (PriorityQueue a) Source
Create a new priority queue.
enqueue :: PriorityQueue a -> Double -> a -> IO () Source
Enqueue a new element with the specified priority.
dequeue :: PriorityQueue a -> IO () Source
Dequeue the element with the minimal priority.
queueFront :: PriorityQueue a -> IO (Double, a) Source
Return the element with the minimal priority.
queueDelete :: Eq a => PriorityQueue a -> a -> IO Bool Source
Remove the specified element from the queue and return a computation of the flag indicating whether the element was actually removed.
Note that unlike other functions it has complexity O(n).
queueDeleteBy :: PriorityQueue a -> (a -> Bool) -> IO (Maybe a) Source
Remove an element satisfying the predicate and return a computation of the element if found.
Note that unlike other functions it has complexity O(n).
remove :: Eq a => PriorityQueue a -> a -> IO Bool Source
Deprecated: Use queueDelete instead.
Use queueDelete
instead.
removeBy :: PriorityQueue a -> (a -> Bool) -> IO Bool Source
Deprecated: Use queueDeleteBy instead.
Use queueDeleteBy
instead.