-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Resuable corecursive queues, via continuations. -- -- Corecursive Queues @package control-monad-queue @version 0.0.9 module Control.Monad.Queue.Util type LenType = Word32 module Control.Monad.Queue.Class class (Monad q) => MonadQueue e q | q -> e enQ :: (MonadQueue e q) => e -> q () peekQ :: (MonadQueue e q) => q (Maybe e) peekQs :: (MonadQueue e q, Integral maxlen) => maxlen -> q [e] peekQn :: (MonadQueue e q, Integral index) => index -> q (Maybe e) deQ :: (MonadQueue e q) => q (Maybe e) deQs :: (MonadQueue e q, Integral maxlen) => maxlen -> q [e] lenQ :: (MonadQueue e q, Integral len) => q len -- | A library implementation of corecursive queues, see Circular -- Programs and Self-Referential Structures by Lloyd Allison, -- Software Practice and Experience, 19(2), pp.99-109, Feb 1989 -- -- http://www.csse.monash.edu.au/~lloyd/tildeFP/1989SPE/ -- -- For an explanation of the library implementation, see Lloyd -- Allison's Corecursive Queue: Why Continuations Matter by Leon P -- Smith, in The Monad Reader issue 14. module Control.Monad.Queue.Allison data Q e a type LenType = Word32 enQ :: e -> Q e () peekQ :: Q e (Maybe e) peekQn :: (Integral index) => index -> Q e (Maybe e) peekQs :: (Integral len) => len -> Q e [e] deQ :: Q e (Maybe e) deQs :: (Integral len) => len -> Q e [e] deQ_break :: Q e e lenQ :: (Integral len) => Q e len lenQ_ :: Q e LenType runQueue :: Q e a -> [e] callCC :: ((a -> forall b. Q e b) -> Q e a) -> Q e a instance MonadQueue e (Q e) instance Monad (Q e) -- | Corecursive queues with return values. This is a straightforward -- generalization of Control.Monad.Queue.Allison. module Control.Monad.Queue.Corec data Q w e a type LenType = Word32 enQ :: e -> Q w e () peekQ :: Q w e (Maybe e) peekQn :: (Integral index) => index -> Q w e (Maybe e) peekQs :: (Integral len) => len -> Q w e [e] deQ :: Q w e (Maybe e) deQ_break :: w -> Q w e e deQs :: (Integral len) => len -> Q w e [e] lenQ :: (Integral len) => Q w e len lenQ_ :: Q w e LenType runQueue :: Q a e a -> [e] runResult :: Q a e a -> a runResultQueue :: Q a e a -> (a, [e]) mapQW :: (w -> w) -> Q w e a -> Q w e a callCC :: ((a -> forall b. Q w e b) -> Q w e a) -> Q w e a instance MonadQueue e (Q w e) instance Monad (Q w e)