drinkery-0.4: Boozy streaming library

Safe HaskellSafe
LanguageHaskell2010

Data.Drinkery.Awaiter

Synopsis

Documentation

newtype Awaiter s m a Source #

Awaiter s is a simple consumer of s. Unlike Sink, it can be partially run.

serving distributes each input to a list of Awaiters until all the patrons terminate. (<|>) returns the first result.

Constructors

Awaiter 

Fields

Instances
MonadTrans (Awaiter s) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

lift :: Monad m => m a -> Awaiter s m a #

Monad m => Monad (Awaiter s m) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

(>>=) :: Awaiter s m a -> (a -> Awaiter s m b) -> Awaiter s m b #

(>>) :: Awaiter s m a -> Awaiter s m b -> Awaiter s m b #

return :: a -> Awaiter s m a #

fail :: String -> Awaiter s m a #

Functor m => Functor (Awaiter s m) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

fmap :: (a -> b) -> Awaiter s m a -> Awaiter s m b #

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

Monad m => Applicative (Awaiter s m) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

pure :: a -> Awaiter s m a #

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

liftA2 :: (a -> b -> c) -> Awaiter s m a -> Awaiter s m b -> Awaiter s m c #

(*>) :: Awaiter s m a -> Awaiter s m b -> Awaiter s m b #

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

MonadIO m => MonadIO (Awaiter s m) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

liftIO :: IO a -> Awaiter s m a #

Monad m => Alternative (Awaiter s m) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

empty :: Awaiter s m a #

(<|>) :: Awaiter s m a -> Awaiter s m a -> Awaiter s m a #

some :: Awaiter s m a -> Awaiter s m [a] #

many :: Awaiter s m a -> Awaiter s m [a] #

Monad m => MonadPlus (Awaiter s m) Source # 
Instance details

Defined in Data.Drinkery.Awaiter

Methods

mzero :: Awaiter s m a #

mplus :: Awaiter s m a -> Awaiter s m a -> Awaiter s m a #

await :: Monad m => Awaiter s m s Source #

serving_ :: Monad m => [Awaiter s m a] -> Awaiter s m () Source #

iterAwaiter :: Monad m => m s -> Awaiter s m a -> m a Source #

iterAwaiterT :: (Monad m, MonadTrans t, Monad (t m)) => t m s -> Awaiter s m a -> t m a Source #

iterAwaiterT consume :: Awaiter s m a -> Sink s m a

lookAheadT :: (Monad m, MonadTrans t, Monoid r, Semigroup r, MonadSink (Tap r s) (t m)) => Awaiter s m a -> t m a Source #