Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data Queue a = MakeQueue {
- queue_newest_first_prefix :: ![a]
- queue_oldest_first_postfix :: ![a]
- newQueueM :: IO (IORef (Queue a))
- enqueueM :: IORef (Queue a) -> a -> IO ()
- dequeueM :: IORef (Queue a) -> IO a
- split_list :: [a] -> Int -> (a, Queue a)
- join_list :: a -> Queue a -> [a]
- isEmpty :: Queue a -> Bool
- join :: Queue (Queue a) -> Queue a
- join' :: Queue (Queue a) -> Queue a
- fold :: Arrow arr => (a -> arr b b) -> Queue a -> arr b b
- interleave_queue :: Queue a -> Queue a -> Queue a
- singleton :: a -> Queue a
- enqueue :: a -> Queue a -> Queue a
- enqueue_back :: a -> Queue a -> Queue a
- dequeue :: MonadFail m => Queue a -> m (a, Queue a)
- dequeue_back :: MonadFail m => Queue a -> m (Queue a, a)
- dequeue_rotate :: MonadFail m => Queue a -> m (a, Queue a)
- dequeue_rotate_back :: MonadFail m => Queue a -> m (Queue a, a)
- rotate :: Queue a -> Queue a
- rotate_back :: Queue a -> Queue a
- reduce :: Queue a -> Queue a
- unreduce :: Queue a -> Queue a
- fromList :: [a] -> Queue a
- toList :: Queue a -> [a]
- unzip :: Queue (a, b) -> (Queue a, Queue b)
- zip :: Queue a -> Queue b -> Queue (a, b)
- partitionEither :: Queue (Either a b) -> (Queue a, Queue b)
- append :: Queue a -> Queue a -> Queue a
- dequeue_current :: MonadFail m => Queue a -> m (a, Queue a)
- replace_current :: a -> Queue a -> Queue a
- forward :: a -> Queue a -> Queue a
- backward :: a -> Queue a -> Queue a
- reverse :: Queue a -> Queue a
- sequence :: Monad m => Queue (m a) -> m (Queue a)
- mapM :: Monad m => (a -> m b) -> Queue a -> m (Queue b)
Documentation
a queue is really a list with a missing element which is the focus of the current operations. This idea comes from zipper pattern. http://www.haskell.org/haskellwiki/Zipper
MakeQueue | |
|
Instances
MonadFail Queue Source # | |
Defined in Math.Tools.Queue | |
Alternative Queue Source # | |
Applicative Queue Source # | |
Functor Queue Source # | |
Monad Queue Source # | |
InterleaveFunctor Queue Source # | |
Defined in Math.Tools.Queue | |
Nondeterministic Queue Source # | |
Defined in Math.Tools.Queue | |
ArrowChoice ar => FunctorArrow Queue (ar :: Type -> Type -> Type) (ar :: Type -> Type -> Type) Source # | |
PpShow a => Show (Queue a) Source # | |
Num a => VectorSpace (Queue a) Source # | This version of queue is not a comonad, since empty queue is possible. |
PpShow a => PpShow (Queue a) Source # | |
Defined in Math.Tools.Queue | |
Visitor (Queue a) Source # | |
type Scalar (Queue a) Source # | |
Defined in Math.Tools.Queue | |
data Fold (Queue a) b Source # | |
Defined in Math.Tools.Queue |
split_list :: [a] -> Int -> (a, Queue a) Source #
join :: Queue (Queue a) -> Queue a Source #
join works in round-robin fashion. Note if all inner queues are empty, this goes to infinite loop trying to find elements from empty queues.
join' :: Queue (Queue a) -> Queue a Source #
Alternative implementation of join, works in reverse compared to join.
enqueue_back :: a -> Queue a -> Queue a Source #
rotate_back :: Queue a -> Queue a Source #
replace_current :: a -> Queue a -> Queue a Source #