box-0.0.1.5: boxes

Safe HaskellNone
LanguageHaskell2010

Box.Emitter

Description

Synopsis

Documentation

newtype Emitter m a Source #

an Emitter "emits" values of type a. A Source & a Producer (of as) are the two other alternative but overloaded metaphors out there.

An Emitter 'reaches into itself' for the value to emit, where itself is an opaque thing from the pov of usage. An Emitter is named for its main action: it emits.

Constructors

Emitter 

Fields

Instances
Monad m => Monad (Emitter m) Source # 
Instance details

Defined in Box.Emitter

Methods

(>>=) :: Emitter m a -> (a -> Emitter m b) -> Emitter m b #

(>>) :: Emitter m a -> Emitter m b -> Emitter m b #

return :: a -> Emitter m a #

fail :: String -> Emitter m a #

Functor m => Functor (Emitter m) Source # 
Instance details

Defined in Box.Emitter

Methods

fmap :: (a -> b) -> Emitter m a -> Emitter m b #

(<$) :: a -> Emitter m b -> Emitter m a #

Applicative m => Applicative (Emitter m) Source # 
Instance details

Defined in Box.Emitter

Methods

pure :: a -> Emitter m a #

(<*>) :: Emitter m (a -> b) -> Emitter m a -> Emitter m b #

liftA2 :: (a -> b -> c) -> Emitter m a -> Emitter m b -> Emitter m c #

(*>) :: Emitter m a -> Emitter m b -> Emitter m b #

(<*) :: Emitter m a -> Emitter m b -> Emitter m a #

(Monad m, Alternative m) => Alternative (Emitter m) Source # 
Instance details

Defined in Box.Emitter

Methods

empty :: Emitter m a #

(<|>) :: Emitter m a -> Emitter m a -> Emitter m a #

some :: Emitter m a -> Emitter m [a] #

many :: Emitter m a -> Emitter m [a] #

(Alternative m, Monad m) => MonadPlus (Emitter m) Source # 
Instance details

Defined in Box.Emitter

Methods

mzero :: Emitter m a #

mplus :: Emitter m a -> Emitter m a -> Emitter m a #

(Alternative m, Monad m) => Semigroup (Emitter m a) Source # 
Instance details

Defined in Box.Emitter

Methods

(<>) :: Emitter m a -> Emitter m a -> Emitter m a #

sconcat :: NonEmpty (Emitter m a) -> Emitter m a #

stimes :: Integral b => b -> Emitter m a -> Emitter m a #

(Alternative m, Monad m) => Monoid (Emitter m a) Source # 
Instance details

Defined in Box.Emitter

Methods

mempty :: Emitter m a #

mappend :: Emitter m a -> Emitter m a -> Emitter m a #

mconcat :: [Emitter m a] -> Emitter m a #

liftE :: MonadConc m => Emitter (STM m) a -> Emitter m a Source #

emap :: Monad m => (a -> m (Maybe b)) -> Emitter m a -> Emitter m b Source #

like a monadic mapMaybe. (See witherable)

keeps Source #

Arguments

:: Monad m 
=> ((b -> Constant (First b) b) -> a -> Constant (First b) a) 
-> Emitter m a 
-> Emitter m b 

prism handler

eRead :: (Functor m, Read a) => Emitter m Text -> Emitter m (Either Text a) Source #

read parse emitter

eParse :: Functor m => Parser a -> Emitter m Text -> Emitter m (Either Text a) Source #

attoparsec parse emitter