drinkery-0: Boozy streaming library

Safe HaskellSafe
LanguageHaskell2010

Data.Drinkery.Boozer

Synopsis

Documentation

data Boozer r s m a Source #

Boozer is the initial encoding of a consumer.

Constructors

Drink (s -> Boozer r s m a) 
Spit s (Boozer r s m a) 
Call r (Boozer r s m a) 
Lift (m (Boozer r s m a)) 
Pure a 

Instances

Functor m => MonadDrunk r s (Boozer r s m) Source # 

Methods

drink :: Boozer r s m s Source #

spit :: s -> Boozer r s m () Source #

call :: r -> Boozer r s m () Source #

MonadReader x m => MonadReader x (Boozer r s m) Source # 

Methods

ask :: Boozer r s m x #

local :: (x -> x) -> Boozer r s m a -> Boozer r s m a #

reader :: (x -> a) -> Boozer r s m a #

MonadState x m => MonadState x (Boozer r s m) Source # 

Methods

get :: Boozer r s m x #

put :: x -> Boozer r s m () #

state :: (x -> (a, x)) -> Boozer r s m a #

MonadTrans (Boozer r s) Source # 

Methods

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

Functor m => Monad (Boozer r s m) Source # 

Methods

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

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

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

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

Functor m => Functor (Boozer r s m) Source # 

Methods

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

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

Functor m => Applicative (Boozer r s m) Source # 

Methods

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

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

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

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

MonadIO m => MonadIO (Boozer r s m) Source # 

Methods

liftIO :: IO a -> Boozer r s m a #

iterBoozer Source #

Arguments

:: ([s] -> a -> z)

return

-> ((s -> z) -> z)

drink

-> (r -> z -> z)

call

-> (forall x. m x -> (x -> z) -> z)

bind

-> Boozer r s m a 
-> z 

Tear down a Boozer, maintaining a stack of leftovers.

hoistBoozer :: Functor n => (forall x. m x -> n x) -> Boozer r s m a -> Boozer r s n a Source #

newtype Patron r s m a Source #

Patron is a CPS'd Boozer.

Constructors

Patron 

Fields

Instances

MonadDrunk r s (Patron r s m) Source # 

Methods

drink :: Patron r s m s Source #

spit :: s -> Patron r s m () Source #

call :: r -> Patron r s m () Source #

MonadReader x m => MonadReader x (Patron r s m) Source # 

Methods

ask :: Patron r s m x #

local :: (x -> x) -> Patron r s m a -> Patron r s m a #

reader :: (x -> a) -> Patron r s m a #

MonadState x m => MonadState x (Patron r s m) Source # 

Methods

get :: Patron r s m x #

put :: x -> Patron r s m () #

state :: (x -> (a, x)) -> Patron r s m a #

MonadTrans (Patron r s) Source # 

Methods

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

Monad (Patron r s m) Source # 

Methods

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

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

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

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

Functor (Patron r s m) Source # 

Methods

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

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

Applicative (Patron r s m) Source # 

Methods

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

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

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

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

MonadIO m => MonadIO (Patron r s m) Source # 

Methods

liftIO :: IO a -> Patron r s m a #

runPatron :: Patron r s m a -> Boozer r s m a Source #