Idris2Doc : Data.MSF.Trans

Data.MSF.Trans

(source)
Monad morphisms and interaction with monad transformer stacks.

Definitions

morphGS : Monadm1=> ((i1->m1 (o1, c)) ->i2->m2 (o2, c)) ->MSFm1i1o1->MSFm2i2o2
  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: export
morph : Monadm1=> (m1c->m2c) ->MSFm1i1o1->MSFm2i1o1
  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: export
fromPure : Monadm=>MSFIdentityio->MSFmio
  Puts a pure MSF (over the `Identity` monad) in another
monadic context.

Visibility: export
get : MonadStatesm=>MSFmis
  Alias for `constM get`

Visibility: export
put : MonadStatesm=>MSFms ()
  Alias for `constM put`

Visibility: export
modify : MonadStatesm=>MSFm (s->s) ()
  Alias for `constM modify`

Visibility: export
fromState : Monadm=>MSF (StateTsm) io->MSFm (HList [s, i]) (HList [s, o])
  Converts an outer `StateT` wrapper to an MSF converting
an additional argument of the state type.

Visibility: export
loopState : Monadm=>s->MSF (StateTsm) io->MSFmio
  Runs the given stateful MSF as a feedback loop with `ini` as the
initial input.

This is a shorthand for `feedback ini . fromState`.

Visibility: export
fromState_ : Monadm=>MSF (StateTsm) () () ->MSFmss
  Like `fromState` but drops the uninteresting unit in- and output.

Visibility: export
toState : Monadm=>MSFm (HList [s, i]) (HList [s, o]) ->MSF (StateTsm) io
  Converts a state transforming MSF to one with its monadic context
wrapped in `StateT s`.

Visibility: export
toState_ : Monadm=>MSFmss->MSF (StateTsm) () ()
  Like `toState` but for MSFs without additional in- or output

Visibility: export
ask : MonadReaderem=>MSFmie
  Alias for `constM ask`

Visibility: export
fromReader : Monadm=>MSF (ReaderTem) io->MSFm (HList [e, i]) o
  Converts an outer `ReaderT` wrapper to an MSF taking an
an additional input.

Visibility: export
withEnv : Monadm=>e->MSF (ReaderTem) io->MSFmio
  Converts the given MSF to use `env` as its environment.

This is an alias for `fan [ const env, id ] >>> fromReader sf`.

Visibility: export
fromReader_ : Monadm=>MSF (ReaderTem) () o->MSFmeo
  Like `unReader` but drops the uninteresting unit input.

Visibility: export
toReader : Monadm=>MSFm (HList [e, i]) o->MSF (ReaderTem) io
  Converts an MSF taking an additional input
to one with its monadic context wrapped in `ReaderT e`.

Visibility: export
toReader_ : Monadm=>MSFmeo->MSF (ReaderTem) () o
  Like `toReader` but for MSFs without additional input

Visibility: export
tell : MonadWriterwm=>MSFmw ()
  Alias for `arrM tell`

Visibility: export
fromWriter : Monoidw=>Monadm=>MSF (WriterTwm) io->MSFmi (HList [w, o])
  Converts an outer `WriterT` wrapper to an MSF producing
an additional output.

Visibility: export
fromWriter_ : Monoidw=>Monadm=>MSF (WriterTwm) i () ->MSFmiw
  Like `fromWriter` but ignores the uninteresting output.

Visibility: export
toWriter : Monoidw=>Monadm=>MSFmi (HList [w, o]) ->MSF (WriterTwm) io
  Converts an MSF producing an additional output
to one with its monadic context wrapped in `WriterT w`.

Visibility: export
toWriter_ : Monoidw=>Monadm=>MSFmiw->MSF (WriterTwm) i ()
  Like `toWriter` but produces unit as output.

Visibility: export