úÎ-N+r       Safe-InferedA mapping from keys k to priorites p. k :-> p binds the key k with the priority p. The key of a binding The priority of a binding O(1)$ The number of bindings in a queue. O(1) True if the queue is empty. O(log n); The priority of a given key, or Nothing if the key is not  bound. %O(1) Build a queue with one binding. O(log n)" Insert a binding into the queue. O(log n). Insert a binding with a combining function. O(log n)" Remove a binding from the queue. O(log n) Adjust the priority of a key. O(log n) Adjust the priority of a key. O(log n) The expression ( update f k q) updates the  priority p bound k (if it is in the queue). If (f p) is  , # the binding is deleted. If it is (! z ), the key k is bound  to the new priority z. O(log n). The expression (updateWithKey f k q) updates the  priority p bound k (if it is in the queue). If (f k p) is  , # the binding is deleted. If it is (! z ), the key k is bound  to the new priority z. O(log n). The expression ( f k q) alters the priority p bound to k, or absence thereof. G alter can be used to insert, delete, or update a priority in a queue. O(n) The keys of a priority queue  O(n log n)( Build a queue from a list of bindings. O(n)3 Build a queue from a list of bindings in order of N ascending keys. The precondition that the keys are ascending is not checked. O(n)< Build a queue from a list of distinct bindings in order of W ascending keys. The precondition that keys are distinct and ascending is not checked. O(n) Convert a queue to a list. O(n)7 Convert a queue to a list in ascending order of keys. O(n)8 Convert a queue to a list in descending order of keys. O(1)' The binding with the lowest priority. O(log n). Remove the binding with the lowest priority. O(log n)? Retrieve the binding with the least priority, and the rest of & the queue stripped of that binding. O(r(log n - log r)  atMost p q" is a list of all the bindings in q with  priority less than p, in order of ascending keys.  Effectively,   atMost p' q = filter (\ (k:->p) -> p<=p' ) . toList O(r(log n - log r)) atMostRange p (l,u) q" is a list of all the bindings in  q with a priority less than p and a key in the range (l,u) inclusive.  Effectively,   atMostRange p' (l,u) q = filter (\ (k:->p) -> l<=k && k<=u ) .  p' 9Right fold over the bindings in the queue, in key order. 8Left fold over the bindings in the queue, in key order. " "#    ! "#$      !"#$"#%&'( PSQueue-1.1 Data.PSQueuePSQBinding:->keypriosizenulllookupempty singletoninsert insertWithdeleteadjust adjustWithKeyupdate updateWithKeyalterkeysfromList fromAscListfromDistinctAscListtoList toAscList toDescListfindMin deleteMinminViewatMost atMostRangefoldrfoldlbase Data.MaybeNothingJust $fShowSequ $fShowPSQ