Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype Emitter m a = Emitter {}
- mapE :: Monad m => (a -> m (Maybe b)) -> Emitter m a -> Emitter m b
- readE :: (Functor m, Read a) => Emitter m Text -> Emitter m (Either Text a)
- readE_ :: (Monad m, Read a) => Emitter m Text -> Emitter m a
- parseE :: Functor m => Parser a -> Emitter m Text -> Emitter m (Either Text a)
- parseE_ :: Monad m => Parser a -> Emitter m Text -> Emitter m a
- premapE :: Applicative m => (Emitter m a -> m ()) -> Emitter m a -> Emitter m a
- postmapE :: Monad m => (Emitter m a -> m ()) -> Emitter m a -> Emitter m a
- postmapM :: Monad m => (a -> m ()) -> Emitter m a -> Emitter m a
- toListE :: Monad m => Emitter m a -> m [a]
- unlistE :: Monad m => Emitter m [a] -> Emitter (StateT [a] m) a
- stateE :: Monad m => Emitter (StateT [a] m) a
Documentation
an Emitter
"emits" values of type a. A Source & a Producer (of a's) 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.
Instances
Monad m => Monad (Emitter m) Source # | |
Functor m => Functor (Emitter m) Source # | |
Applicative m => Applicative (Emitter m) Source # | |
(Monad m, Alternative m) => Alternative (Emitter m) Source # | |
(Alternative m, Monad m) => MonadPlus (Emitter m) Source # | |
MFunctor Emitter Source # | |
(Alternative m, Monad m) => Semigroup (Emitter m a) Source # | |
(Alternative m, Monad m) => Monoid (Emitter m a) Source # | |
mapE :: Monad m => (a -> m (Maybe b)) -> Emitter m a -> Emitter m b Source #
like a monadic mapMaybe. (See witherable)
readE :: (Functor m, Read a) => Emitter m Text -> Emitter m (Either Text a) Source #
read parse emitter, returning the original string on error
parseE :: Functor m => Parser a -> Emitter m Text -> Emitter m (Either Text a) Source #
parse emitter which returns the original text on failure
premapE :: Applicative m => (Emitter m a -> m ()) -> Emitter m a -> Emitter m a Source #
adds a pre-emit monadic action to the emitter
postmapE :: Monad m => (Emitter m a -> m ()) -> Emitter m a -> Emitter m a Source #
adds a post-emit monadic action to the emitter
postmapM :: Monad m => (a -> m ()) -> Emitter m a -> Emitter m a Source #
add a post-emit monadic action on the emitted value (if there was any)