úÎ!5™4      Safe$Ž flush-queue/FIFO Bounded Queue with O(1) amortized popping. flush-queueCreate new Bounded Queue flush-queueÅPush an element onto the queue. Returns the new queue with the element placed onto the right side of the source queue, but only if the maximum bound hasn't been reached, otherwise it will return  flush-queue{Pop an element from the queue. Returns the leftmost element from the queue together with new queue, lacking that element,  if the queue was empty. flush-queue4/O(n) - Get all the elements from the Bounded Queue. flush-queueO(i) - Take ib elements from the Bounded Queue. This function doesn't fail - it returns empty list on negative i< and all elements there is if requested more than available. flush-queueO(1)$ - Get the current length of a queue flush-queue8Upper bound on the numer of elements the queue can hold.(c) FP Complete 2018BSD3*Alexey Kuleshevich <alexey@fpcomplete.com> experimental non-portableNone# flush-queueçBounded Flush Queue. It's a queue that allows pushing elements onto, but popping elements is not an option. Only flushing or non-blocking taking from the queue will make space for new elements and unlbock any concurrent writers.. flush-queueCreate new empty BFQueue flush-queueO(1)P - Push an element onto the queue. Will block if maximum bound has been reached. flush-queueO(1)G - Try to push an element onto the queue without blocking. Will return * if element was pushed successfully, and  in case when the queue is full. flush-queueO(n)o - Flush the queue, unblock all the possible writers and return all the elements from the queue in FIFO order. flush-queueO(i) - Take iu elements from the queue, unblock all the possible writers and return all the elements from the queue in FIFO order. flush-queueO(1)< - Extract number of elements that is currently on the queue flush-queueO(1) - Check if queue is empty(c) FP Complete 2018BSD3*Alexey Kuleshevich <alexey@fpcomplete.com> experimental non-portableSafe3µ  flush-queue¢Bounded Flush Queue. It's a queue that allows pushing elements onto, popping elements from it, but is mostly optimizied for flushing the queue or taking in bulk.  flush-queue)Construct a new empty Flush Bounded Queue  flush-queue:Construct a new empty Flush Bounded Queue inside IO monad.  flush-queueO(1)P - Push an element onto the queue. Will block if maximum bound has been reached.  flush-queueO(1)G - Try to push an element onto the queue without blocking. Will return * if element was pushed successfully, and  in case when the queue is full.  flush-queueAmortized O(1)? - Pop an element from the queue. Will block if queue is empty. flush-queueO(n)o - Flush the queue, unblock all the possible writers and return all the elements from the queue in FIFO order. flush-queueO(i) - Take iu elements from the queue, unblock all the possible writers and return all the elements from the queue in FIFO order. flush-queueO(1)< - Extract number of elements that is currently on the queue flush-queueO(1) - Check if queue is empty  flush-queue5Maximum number of elements, that this queue can hold.  flush-queue5Maximum number of elements, that this queue can hold.          !" !#$(flush-queue-1.0.0-2I5qE8Iwy6D2PUgaCqm8tmControl.Concurrent.BFQueueControl.Concurrent.STM.TBFQueueControl.Concurrent.BQueueBFQueue newBFQueue writeBFQueuetryWriteBFQueue flushBFQueue takeBFQueue lengthBFQueueisEmptyBFQueueTBFQueue newTBFQueue newTBFQueueIO writeTBFQueuetryWriteTBFQueue readTBFQueue flushTBFQueue takeTBFQueuelengthTBFQueueisEmptyTBFQueueBQueue newBQueue pushBQueuebase GHC.MaybeNothing popBQueue flushBQueue takeBQueue lengthBQueueghc-prim GHC.TypesTrueFalse