| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Stream.Except
Synopsis
- data StreamExcept a (m :: Type -> Type) e
- = RecursiveExcept (Recursive (ExceptT e m) a)
- | CoalgebraicExcept (OptimizedStreamT (ExceptT e m) a)
- mapOutput :: forall (m :: Type -> Type) a b e. Functor m => (a -> b) -> StreamExcept a m e -> StreamExcept b m e
- toRecursive :: forall (m :: Type -> Type) a e. Functor m => StreamExcept a m e -> Recursive (ExceptT e m) a
- runStreamExcept :: forall a (m :: Type -> Type) e. StreamExcept a m e -> OptimizedStreamT (ExceptT e m) a
- stepInstant :: Functor m => StreamExcept a m e -> m (Either e (Result (StreamExcept a m e) a))
- safely :: forall (m :: Type -> Type) a. Monad m => StreamExcept a m Void -> OptimizedStreamT m a
- safe :: forall (m :: Type -> Type) a void. Monad m => OptimizedStreamT m a -> StreamExcept a m void
- forever :: forall (m :: Type -> Type) a e. Monad m => StreamExcept a m e -> OptimizedStreamT m a
Documentation
data StreamExcept a (m :: Type -> Type) e Source #
A stream that can terminate with an exception.
In automaton, such streams mainly serve as a vehicle to bring control flow to AutomatonExcept
(which is based on StreamExcept), and the docs there apply here as well.
StreamExcept is not only a Monad, it also has more efficient Selective, Applicative, and Functor interfaces.
Constructors
| RecursiveExcept (Recursive (ExceptT e m) a) | When using |
| CoalgebraicExcept (OptimizedStreamT (ExceptT e m) a) | This is usually the faster encoding, as it can be optimized by GHC. |
Instances
| MFunctor (StreamExcept a :: (Type -> Type) -> Type -> Type) Source # | |
Defined in Data.Stream.Except Methods hoist :: Monad m => (forall a0. m a0 -> n a0) -> StreamExcept a m b -> StreamExcept a n b # | |
| MonadTrans (StreamExcept a) Source # | |
Defined in Data.Stream.Except Methods lift :: Monad m => m a0 -> StreamExcept a m a0 # | |
| (Functor m, Foldable m) => Foldable (StreamExcept a m) Source # | Run all steps of the stream, discarding all output, until the exception is reached. |
Defined in Data.Stream.Except Methods fold :: Monoid m0 => StreamExcept a m m0 -> m0 # foldMap :: Monoid m0 => (a0 -> m0) -> StreamExcept a m a0 -> m0 # foldMap' :: Monoid m0 => (a0 -> m0) -> StreamExcept a m a0 -> m0 # foldr :: (a0 -> b -> b) -> b -> StreamExcept a m a0 -> b # foldr' :: (a0 -> b -> b) -> b -> StreamExcept a m a0 -> b # foldl :: (b -> a0 -> b) -> b -> StreamExcept a m a0 -> b # foldl' :: (b -> a0 -> b) -> b -> StreamExcept a m a0 -> b # foldr1 :: (a0 -> a0 -> a0) -> StreamExcept a m a0 -> a0 # foldl1 :: (a0 -> a0 -> a0) -> StreamExcept a m a0 -> a0 # toList :: StreamExcept a m a0 -> [a0] # null :: StreamExcept a m a0 -> Bool # length :: StreamExcept a m a0 -> Int # elem :: Eq a0 => a0 -> StreamExcept a m a0 -> Bool # maximum :: Ord a0 => StreamExcept a m a0 -> a0 # minimum :: Ord a0 => StreamExcept a m a0 -> a0 # sum :: Num a0 => StreamExcept a m a0 -> a0 # product :: Num a0 => StreamExcept a m a0 -> a0 # | |
| Traversable m => Traversable (StreamExcept a m) Source # | |
Defined in Data.Stream.Except Methods traverse :: Applicative f => (a0 -> f b) -> StreamExcept a m a0 -> f (StreamExcept a m b) # sequenceA :: Applicative f => StreamExcept a m (f a0) -> f (StreamExcept a m a0) # mapM :: Monad m0 => (a0 -> m0 b) -> StreamExcept a m a0 -> m0 (StreamExcept a m b) # sequence :: Monad m0 => StreamExcept a m (m0 a0) -> m0 (StreamExcept a m a0) # | |
| Monad m => Applicative (StreamExcept a m) Source # | |
Defined in Data.Stream.Except Methods pure :: a0 -> StreamExcept a m a0 # (<*>) :: StreamExcept a m (a0 -> b) -> StreamExcept a m a0 -> StreamExcept a m b # liftA2 :: (a0 -> b -> c) -> StreamExcept a m a0 -> StreamExcept a m b -> StreamExcept a m c # (*>) :: StreamExcept a m a0 -> StreamExcept a m b -> StreamExcept a m b # (<*) :: StreamExcept a m a0 -> StreamExcept a m b -> StreamExcept a m a0 # | |
| Functor m => Functor (StreamExcept a m) Source # | |
Defined in Data.Stream.Except Methods fmap :: (a0 -> b) -> StreamExcept a m a0 -> StreamExcept a m b # (<$) :: a0 -> StreamExcept a m b -> StreamExcept a m a0 # | |
| Monad m => Monad (StreamExcept a m) Source # |
|
Defined in Data.Stream.Except Methods (>>=) :: StreamExcept a m a0 -> (a0 -> StreamExcept a m b) -> StreamExcept a m b # (>>) :: StreamExcept a m a0 -> StreamExcept a m b -> StreamExcept a m b # return :: a0 -> StreamExcept a m a0 # | |
| Monad m => Selective (StreamExcept a m) Source # | |
Defined in Data.Stream.Except Methods select :: StreamExcept a m (Either a0 b) -> StreamExcept a m (a0 -> b) -> StreamExcept a m b # | |
mapOutput :: forall (m :: Type -> Type) a b e. Functor m => (a -> b) -> StreamExcept a m e -> StreamExcept b m e Source #
Apply a function to the output of the stream
toRecursive :: forall (m :: Type -> Type) a e. Functor m => StreamExcept a m e -> Recursive (ExceptT e m) a Source #
runStreamExcept :: forall a (m :: Type -> Type) e. StreamExcept a m e -> OptimizedStreamT (ExceptT e m) a Source #
stepInstant :: Functor m => StreamExcept a m e -> m (Either e (Result (StreamExcept a m e) a)) Source #
safely :: forall (m :: Type -> Type) a. Monad m => StreamExcept a m Void -> OptimizedStreamT m a Source #
safe :: forall (m :: Type -> Type) a void. Monad m => OptimizedStreamT m a -> StreamExcept a m void Source #
forever :: forall (m :: Type -> Type) a e. Monad m => StreamExcept a m e -> OptimizedStreamT m a Source #