morphGS : Monad m1 => ((i1 -> m1 (o1, c)) -> i2 -> m2 (o2, c)) -> MSF m1 i1 o1 -> MSF m2 i2 o2 The most general structure-preserving monad morphism.
This can be used to change the input and output type plus
the effect type of an MSF without affecting its internal
structure (wiring of stream functions).
For examples of usage, have a look at the implementations of
functions like `unreader`, `reader`, `unstate`, and similar.
Visibility: exportmorph : Monad m1 => (m1 c -> m2 c) -> MSF m1 i1 o1 -> MSF m2 i1 o1 Applies a monad morphism to change the context of an MSF.
```idris example
fromPure : Monad m => MSF Identity i o -> MSF m i o
fromPure = morph (pure . runIdentity)
```
Visibility: exportfromPure : Monad m => MSF Identity i o -> MSF m i o Puts a pure MSF (over the `Identity` monad) in another
monadic context.
Visibility: exportget : MonadState s m => MSF m i s Alias for `constM get`
Visibility: exportput : MonadState s m => MSF m s () Alias for `constM put`
Visibility: exportmodify : MonadState s m => MSF m (s -> s) () Alias for `constM modify`
Visibility: exportfromState : Monad m => MSF (StateT s m) i o -> MSF m (HList [s, i]) (HList [s, o]) Converts an outer `StateT` wrapper to an MSF converting
an additional argument of the state type.
Visibility: exportloopState : Monad m => s -> MSF (StateT s m) i o -> MSF m i o Runs the given stateful MSF as a feedback loop with `ini` as the
initial input.
This is a shorthand for `feedback ini . fromState`.
Visibility: exportfromState_ : Monad m => MSF (StateT s m) () () -> MSF m s s Like `fromState` but drops the uninteresting unit in- and output.
Visibility: exporttoState : Monad m => MSF m (HList [s, i]) (HList [s, o]) -> MSF (StateT s m) i o Converts a state transforming MSF to one with its monadic context
wrapped in `StateT s`.
Visibility: exporttoState_ : Monad m => MSF m s s -> MSF (StateT s m) () () Like `toState` but for MSFs without additional in- or output
Visibility: exportask : MonadReader e m => MSF m i e Alias for `constM ask`
Visibility: exportfromReader : Monad m => MSF (ReaderT e m) i o -> MSF m (HList [e, i]) o Converts an outer `ReaderT` wrapper to an MSF taking an
an additional input.
Visibility: exportwithEnv : Monad m => e -> MSF (ReaderT e m) i o -> MSF m i o Converts the given MSF to use `env` as its environment.
This is an alias for `fan [ const env, id ] >>> fromReader sf`.
Visibility: exportfromReader_ : Monad m => MSF (ReaderT e m) () o -> MSF m e o Like `unReader` but drops the uninteresting unit input.
Visibility: exporttoReader : Monad m => MSF m (HList [e, i]) o -> MSF (ReaderT e m) i o Converts an MSF taking an additional input
to one with its monadic context wrapped in `ReaderT e`.
Visibility: exporttoReader_ : Monad m => MSF m e o -> MSF (ReaderT e m) () o Like `toReader` but for MSFs without additional input
Visibility: exporttell : MonadWriter w m => MSF m w () Alias for `arrM tell`
Visibility: exportfromWriter : Monoid w => Monad m => MSF (WriterT w m) i o -> MSF m i (HList [w, o]) Converts an outer `WriterT` wrapper to an MSF producing
an additional output.
Visibility: exportfromWriter_ : Monoid w => Monad m => MSF (WriterT w m) i () -> MSF m i w Like `fromWriter` but ignores the uninteresting output.
Visibility: exporttoWriter : Monoid w => Monad m => MSF m i (HList [w, o]) -> MSF (WriterT w m) i o Converts an MSF producing an additional output
to one with its monadic context wrapped in `WriterT w`.
Visibility: exporttoWriter_ : Monoid w => Monad m => MSF m i w -> MSF (WriterT w m) i () Like `toWriter` but produces unit as output.
Visibility: export