drinkery-0: Boozy streaming library

Safe HaskellSafe
LanguageHaskell2010

Data.Drinkery.Tap

Synopsis

Documentation

newtype Tap m r s Source #

Tap m r s is a non-monadic, endless producer of s. It takes a request r.

Constructors

Tap 

Fields

consTap :: (Monoid r, Applicative m) => s -> Tap m r s -> Tap m r s Source #

Prepend a new element, delaying requests.

orderTap :: Monoid r => r -> Tap m r s -> Tap m r s Source #

Send a request to a Tap.

makeTap :: (Monoid r, Monad m) => m (Tap m r s) -> Tap m r s Source #

Involve an action.

newtype Barman r s m a Source #

Monadic producer

Constructors

Barman 

Fields

Instances

MonadDrunk r s m => MonadDrunk r s (Barman p q m) Source # 

Methods

drink :: Barman p q m s Source #

spit :: s -> Barman p q m () Source #

call :: r -> Barman p q m () Source #

MonadTrans (Barman r s) Source # 

Methods

lift :: Monad m => m a -> Barman r s m a #

Monad (Barman r s m) Source # 

Methods

(>>=) :: Barman r s m a -> (a -> Barman r s m b) -> Barman r s m b #

(>>) :: Barman r s m a -> Barman r s m b -> Barman r s m b #

return :: a -> Barman r s m a #

fail :: String -> Barman r s m a #

Functor (Barman r s m) Source # 

Methods

fmap :: (a -> b) -> Barman r s m a -> Barman r s m b #

(<$) :: a -> Barman r s m b -> Barman r s m a #

Applicative (Barman r s m) Source # 

Methods

pure :: a -> Barman r s m a #

(<*>) :: Barman r s m (a -> b) -> Barman r s m a -> Barman r s m b #

(*>) :: Barman r s m a -> Barman r s m b -> Barman r s m b #

(<*) :: Barman r s m a -> Barman r s m b -> Barman r s m a #

topup :: (Monoid r, Applicative m) => s -> Barman r s m () Source #

Produce one element. Orders are put off.

accept :: Monoid r => Barman r s m r Source #

Accept orders and clear the queue.

inexhaustible :: Barman r s m x -> Tap m r s Source #

Create a infinite Tap from a Barman.

Barman r s (Boozer p q m) x -> Distiller p q m r s

newtype Sommelier r m s Source #

Backtracking producer a.k.a. "ListT done right".

Constructors

Sommelier 

Fields

Instances

MonadDrunk r s m => MonadDrunk r s (Sommelier p m) Source # 

Methods

drink :: Sommelier p m s Source #

spit :: s -> Sommelier p m () Source #

call :: r -> Sommelier p m () Source #

MonadTrans (Sommelier r) Source # 

Methods

lift :: Monad m => m a -> Sommelier r m a #

Monad (Sommelier r m) Source # 

Methods

(>>=) :: Sommelier r m a -> (a -> Sommelier r m b) -> Sommelier r m b #

(>>) :: Sommelier r m a -> Sommelier r m b -> Sommelier r m b #

return :: a -> Sommelier r m a #

fail :: String -> Sommelier r m a #

Functor (Sommelier r m) Source # 

Methods

fmap :: (a -> b) -> Sommelier r m a -> Sommelier r m b #

(<$) :: a -> Sommelier r m b -> Sommelier r m a #

Applicative (Sommelier r m) Source # 

Methods

pure :: a -> Sommelier r m a #

(<*>) :: Sommelier r m (a -> b) -> Sommelier r m a -> Sommelier r m b #

(*>) :: Sommelier r m a -> Sommelier r m b -> Sommelier r m b #

(<*) :: Sommelier r m a -> Sommelier r m b -> Sommelier r m a #

MonadIO m => MonadIO (Sommelier r m) Source # 

Methods

liftIO :: IO a -> Sommelier r m a #

Alternative (Sommelier r m) Source # 

Methods

empty :: Sommelier r m a #

(<|>) :: Sommelier r m a -> Sommelier r m a -> Sommelier r m a #

some :: Sommelier r m a -> Sommelier r m [a] #

many :: Sommelier r m a -> Sommelier r m [a] #

taste :: Foldable f => f s -> Sommelier r m s Source #

Take all the elements in a Foldable container.

inquire :: Monoid r => Sommelier r m r Source #

Get a request.