cifl-math-library-1.1.1.0: Math libraries
Safe HaskellSafe-Inferred
LanguageHaskell2010

Math.Tools.Queue

Synopsis

Documentation

data Queue a Source #

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

Constructors

MakeQueue 

Instances

Instances details
MonadFail Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

fail :: String -> Queue a #

Alternative Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

empty :: Queue a #

(<|>) :: Queue a -> Queue a -> Queue a #

some :: Queue a -> Queue [a] #

many :: Queue a -> Queue [a] #

Applicative Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

pure :: a -> Queue a #

(<*>) :: Queue (a -> b) -> Queue a -> Queue b #

liftA2 :: (a -> b -> c) -> Queue a -> Queue b -> Queue c #

(*>) :: Queue a -> Queue b -> Queue b #

(<*) :: Queue a -> Queue b -> Queue a #

Functor Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

fmap :: (a -> b) -> Queue a -> Queue b #

(<$) :: a -> Queue b -> Queue a #

Monad Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

(>>=) :: Queue a -> (a -> Queue b) -> Queue b #

(>>) :: Queue a -> Queue b -> Queue b #

return :: a -> Queue a #

InterleaveFunctor Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

interleave :: Queue a -> Queue a -> Queue a Source #

Nondeterministic Queue Source # 
Instance details

Defined in Math.Tools.Queue

Methods

guess :: [a] -> Queue a Source #

ArrowChoice ar => FunctorArrow Queue (ar :: Type -> Type -> Type) (ar :: Type -> Type -> Type) Source # 
Instance details

Defined in Math.Tools.Queue

Methods

amap :: forall (c :: k) (d :: k). ar c d -> ar (Queue c) (Queue d) Source #

PpShow a => Show (Queue a) Source # 
Instance details

Defined in Math.Tools.Queue

Methods

showsPrec :: Int -> Queue a -> ShowS #

show :: Queue a -> String #

showList :: [Queue a] -> ShowS #

Num a => VectorSpace (Queue a) Source #

This version of queue is not a comonad, since empty queue is possible.

Instance details

Defined in Math.Tools.Queue

Associated Types

type Scalar (Queue a) Source #

Methods

vzero :: Queue a Source #

vnegate :: Queue a -> Queue a Source #

(%+) :: Queue a -> Queue a -> Queue a Source #

(%*) :: Scalar (Queue a) -> Queue a -> Queue a Source #

PpShow a => PpShow (Queue a) Source # 
Instance details

Defined in Math.Tools.Queue

Methods

pp :: Queue a -> Doc Source #

Visitor (Queue a) Source # 
Instance details

Defined in Math.Tools.Queue

Associated Types

data Fold (Queue a) :: Type -> Type Source #

Methods

visit :: Fold (Queue a) a0 -> Queue a -> a0 Source #

type Scalar (Queue a) Source # 
Instance details

Defined in Math.Tools.Queue

type Scalar (Queue a) = a
data Fold (Queue a) b Source # 
Instance details

Defined in Math.Tools.Queue

data Fold (Queue a) b = QueueFold b (a -> b -> b)

enqueueM :: IORef (Queue a) -> a -> IO () Source #

split_list :: [a] -> Int -> (a, Queue a) Source #

join_list :: a -> Queue a -> [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.

fold :: Arrow arr => (a -> arr b b) -> Queue a -> arr b b Source #

enqueue :: a -> Queue a -> Queue a Source #

dequeue :: MonadFail m => Queue a -> m (a, Queue a) Source #

dequeue_back :: MonadFail m => Queue a -> m (Queue a, a) Source #

dequeue_rotate :: MonadFail m => Queue a -> m (a, Queue a) Source #

fromList :: [a] -> Queue a Source #

toList :: Queue a -> [a] Source #

unzip :: Queue (a, b) -> (Queue a, Queue b) Source #

zip :: Queue a -> Queue b -> Queue (a, b) Source #

append :: Queue a -> Queue a -> Queue a Source #

forward :: a -> Queue a -> Queue a Source #

backward :: a -> Queue a -> Queue a Source #

sequence :: Monad m => Queue (m a) -> m (Queue a) Source #

mapM :: Monad m => (a -> m b) -> Queue a -> m (Queue b) Source #