Copyright | (c) Naoto Shimazaki 2018-2020 |
---|---|
License | MIT (see the file LICENSE) |
Maintainer | https://github.com/nshimaza |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
Queue with delay before elements become available to dequeue.
DelayedQueue
is a FIFO but it does NOT make element available to pop
immediately after the element was pushed. DelayedQueue looks like empty until
its delay-buffer is filled up by pushed elements. When a value is pushed to a
DelayedQueue where delay-buffer of the queue is already full-filled, the oldest
element becomes available to dequeue.
Entire elements within DelayedQueue are always inlined in enqueued order. Only older elements overflowed from delay-buffer are available to dequeue. If delay-buffer is not yet filled, no element is available to dequeue. Once delay-buffer is filled, delay-buffer always keeps given number of newest elements.
Synopsis
- data DelayedQueue a
- newEmptyDelayedQueue :: Int -> DelayedQueue a
- push :: a -> DelayedQueue a -> DelayedQueue a
- pop :: DelayedQueue a -> Maybe (a, DelayedQueue a)
Documentation
data DelayedQueue a Source #
Queue with delay before elements become available to dequeue.
Instances
Eq a => Eq (DelayedQueue a) Source # | |
Defined in Data.DelayedQueue (==) :: DelayedQueue a -> DelayedQueue a -> Bool # (/=) :: DelayedQueue a -> DelayedQueue a -> Bool # | |
Show a => Show (DelayedQueue a) Source # | |
Defined in Data.DelayedQueue showsPrec :: Int -> DelayedQueue a -> ShowS # show :: DelayedQueue a -> String # showList :: [DelayedQueue a] -> ShowS # |
:: Int | Delay of the queue in number of element. |
-> DelayedQueue a | Created queue. |
Create a new DelayedQueue
with given delay.
:: a | value to be queued. |
-> DelayedQueue a | queue where the value to be queued. |
-> DelayedQueue a | new queue where the value is pushed. |
Enqueue a value to a DelayedQueue
.
:: DelayedQueue a |
|
-> Maybe (a, DelayedQueue a) | Nothing if there is no available element.
Returns pulled value and |
Dequeue a value from a DelayedQueue
.