Copyright | Copyright (c) 2009-2017 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 8.0.1
An imperative heap-based priority queue.
Synopsis
- 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)
- queueContains :: Eq a => PriorityQueue a -> a -> IO Bool
- queueContainsBy :: 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.
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).
queueContains :: Eq a => PriorityQueue a -> a -> IO Bool Source #
Detect whether the specified element is contained in the queue.
Note that unlike other functions it has complexity O(n).
queueContainsBy :: PriorityQueue a -> (a -> Bool) -> IO (Maybe a) Source #
Detect whether an element satisfying the predicate is contained in the queue.
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.