Copyright | (c) Masahiro Sakai 2012 |
---|---|
License | BSD-style |
Maintainer | masahiro.sakai@gmail.com |
Stability | provisional |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Extensions |
|
ToySolver.Internal.Data.SeqQueue
Description
Queue implemented using IORef and Sequence.
Synopsis
- data SeqQueue m a
- class Monad m => NewFifo q (m :: Type -> Type) where
- newFifo :: m q
- class Monad m => Enqueue q (m :: Type -> Type) a | q -> a where
- enqueue :: q -> a -> m ()
- enqueueBatch :: q -> [a] -> m ()
- class Monad m => Dequeue q (m :: Type -> Type) a | q -> a where
- dequeue :: q -> m (Maybe a)
- dequeueBatch :: q -> m [a]
- class Monad m => QueueSize q (m :: Type -> Type) where
- clear :: PrimMonad m => SeqQueue m a -> m ()
SeqQueue type
Instances
PrimMonad m => NewFifo (SeqQueue m a) m Source # | |
Defined in ToySolver.Internal.Data.SeqQueue | |
PrimMonad m => QueueSize (SeqQueue m a) m Source # | |
Defined in ToySolver.Internal.Data.SeqQueue | |
PrimMonad m => Dequeue (SeqQueue m a) m a Source # | |
Defined in ToySolver.Internal.Data.SeqQueue | |
PrimMonad m => Enqueue (SeqQueue m a) m a Source # | |
Defined in ToySolver.Internal.Data.SeqQueue |
Constructors
class Monad m => NewFifo q (m :: Type -> Type) where #
Construct a new FIFO queue.
Instances
NewFifo PriorityQueue IO Source # | |
Defined in ToySolver.Internal.Data.IndexedPriorityQueue Methods newFifo :: IO PriorityQueue # | |
Ord a => NewFifo (PriorityQueue a) IO Source # | |
Defined in ToySolver.Internal.Data.PriorityQueue Methods newFifo :: IO (PriorityQueue a) # | |
PrimMonad m => NewFifo (SeqQueue m a) m Source # | |
Defined in ToySolver.Internal.Data.SeqQueue |
Operators
class Monad m => Enqueue q (m :: Type -> Type) a | q -> a where #
Minimal complete definition
Methods
Put an item into a queue. May block while trying to do so.
No constraint is placed on the behavior of the queue except that
every item put in "really ought to" come out sometime before
dequeue
returns a Nothing
.
enqueueBatch :: q -> [a] -> m () #
Instances
Enqueue PriorityQueue IO Value Source # | |
Defined in ToySolver.Internal.Data.IndexedPriorityQueue Methods enqueue :: PriorityQueue -> Value -> IO () # enqueueBatch :: PriorityQueue -> [Value] -> IO () # | |
Enqueue q m a => Enqueue (WQueue q) m a | |
Defined in Data.Queue | |
Enqueue (PriorityQueue a) IO a Source # | |
Defined in ToySolver.Internal.Data.PriorityQueue | |
PrimMonad m => Enqueue (SeqQueue m a) m a Source # | |
Defined in ToySolver.Internal.Data.SeqQueue |
class Monad m => Dequeue q (m :: Type -> Type) a | q -> a where #
Minimal complete definition
Methods
Pull an item out of a queue. Should not block. No ordering
constraints are implied other than that any item that went into
the queue "really ought to" come out before dequeue
returns
Nothing
.
dequeueBatch :: q -> m [a] #
Instances
Dequeue PriorityQueue IO Value Source # | |
Defined in ToySolver.Internal.Data.IndexedPriorityQueue | |
Dequeue q m a => Dequeue (RQueue q) m a | |
Defined in Data.Queue | |
Dequeue (PriorityQueue a) IO a Source # | |
Defined in ToySolver.Internal.Data.PriorityQueue | |
PrimMonad m => Dequeue (SeqQueue m a) m a Source # | |
Defined in ToySolver.Internal.Data.SeqQueue |
class Monad m => QueueSize q (m :: Type -> Type) where #
Instances
QueueSize PriorityQueue IO Source # | |
Defined in ToySolver.Internal.Data.IndexedPriorityQueue Methods queueSize :: PriorityQueue -> IO Int # | |
QueueSize (PriorityQueue a) IO Source # | |
Defined in ToySolver.Internal.Data.PriorityQueue Methods queueSize :: PriorityQueue a -> IO Int # | |
PrimMonad m => QueueSize (SeqQueue m a) m Source # | |
Defined in ToySolver.Internal.Data.SeqQueue |