úν¤      Requires STMjoeyadams3.14159@gmail.com Safe-Infered A 4 is a bounded FIFO channel. When the size limit is F exceeded, older entries are discarded to make way for newer entries. %Note: if the size limit is less than 1,  will have no effect, and   will always . Create a new, empty , with the given size limit. $To change the size limit later, use  . IO variant of ). This is useful for creating top-level s using , because performing ? inside a pure computation is extremely dangerous (can lead to + errors and even segfaults, see GHC ticket #5866).  Example:   logQueue ::  LogEntry  logQueue =  (RQ. 1000) {-# NOINLINE logQueue #-} HWrite an entry to the rolling queue. If the queue is full, discard the  oldest entry.  There is no tryWrite , because  never retries. Read the next entry from the .  if the queue is  empty. The B is the number of entries discarded since the last read operation  (usually 0). Like  , but do not . Instead, return  if the queue  is empty. Test if the queue is empty. O(1)' Get the number of items in the queue. HAdjust the size limit. Queue entries will be discarded if necessary to  satisfy the new limit. HGet the current size limit. This will return 0 if a negative value was  passed to , , or  . $Verify internal structure. Throw a  if the check fails, ) signifying a bug in the implementation. IDump the RollingQueue (output and internal counters) to standard output.  This calls   first.           rolling-queue-0.1Data.STM.RollingQueueSystem.IO.UnsafeunsafePerformIOControl.ExceptionNestedAtomicallyCheckException RollingQueuenewnewIOwritereadtryReadisEmptylengthsetLimitgetLimitcheckInvariantsdumpbase GHC.Conc.Syncretry atomicallyghc-prim GHC.TypesInt Data.MaybeNothing$fExceptionCheckException$fShowCheckException$fEqRollingQueue