-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A monad and monad transformer for consuming streams -- -- Useful for building parsing type operations on top of a list of -- elements @package Consumer @version 1.2 -- | A monad for consuming streams - I believe this is basically just a -- specialized version of the State monad. module Control.Monad.Consumer newtype Consumer c a Consumer :: ([c] -> (a, [c])) -> Consumer c a -- | Execute a stateful computation, as a result we get the result of the -- computation, and the final state. runConsumer :: [c] -> Consumer c a -> (a, [c]) -- | Execute a stateful computation, ignoring the final state. evalConsumer :: [c] -> Consumer c a -> a -- | Execute a stateful computation, just for the side effect. execConsumer :: [c] -> Consumer c a -> [c] class Monad m => MonadConsumer m c | m -> c next :: (MonadConsumer m c, Monad m') => m (m' c) peek :: (MonadConsumer m c, Monad m') => m (m' c) poke :: MonadConsumer m c => c -> m c newtype ConsumerT c m a ConsumerT :: ([c] -> m (a, [c])) -> ConsumerT c m a runConsumerT :: ConsumerT c m a -> [c] -> m (a, [c]) instance Monad m => Applicative (ConsumerT c m) instance MonadIO m => MonadIO (ConsumerT c m) instance MonadTrans (ConsumerT c) instance Monad m => MonadConsumer (ConsumerT c m) c instance MonadPlus m => MonadPlus (ConsumerT c m) instance Monad m => Monad (ConsumerT c m) instance Monad m => Functor (ConsumerT c m) instance Applicative (Consumer a) instance MonadConsumer (Consumer c) c instance MonadFix (Consumer c) instance Monad (Consumer c) instance Functor (Consumer c)