Safe Haskell | None |
---|---|

Language | Haskell2010 |

## Synopsis

- module Polysemy.Final
- errorToFinal :: (Member (Final m) r, MonadError e m) => Sem (Error e ': r) a -> Sem r a
- readerToFinal :: (Member (Final m) r, MonadReader i m) => Sem (Reader i ': r) a -> Sem r a
- stateToEmbed :: (Member (Embed m) r, MonadState s m) => Sem (State s ': r) a -> Sem r a
- writerToFinal :: (Member (Final m) r, MonadWriter o m) => Sem (Writer o ': r) a -> Sem r a

# Documentation

module Polysemy.Final

errorToFinal :: (Member (Final m) r, MonadError e m) => Sem (Error e ': r) a -> Sem r a Source #

Run an `Error`

effect through a final `MonadError`

*Beware*: Effects that aren't interpreted in terms of the final
monad will have local state semantics in regards to `Error`

effects
interpreted this way. See `Final`

.

readerToFinal :: (Member (Final m) r, MonadReader i m) => Sem (Reader i ': r) a -> Sem r a Source #

Run a `Reader`

effect through a final `MonadReader`

*Beware*: Effects that aren't interpreted in terms of the final
monad will have local state semantics in regards to `Reader`

effects
interpreted this way. See `Final`

.

stateToEmbed :: (Member (Embed m) r, MonadState s m) => Sem (State s ': r) a -> Sem r a Source #

Run a `State`

effect in terms of an underlying `MonadState`

instance

Although this is not a `Final`

interpreter, as the target monad need not
actually be the final monad, `stateToEmbed`

still possesses the
unusual semantics of interpreters that runs
effects by embedding them into another monad.

*Beware*: Effects that aren't interpreted in terms of the embedded
monad will have local state semantics in regards to `State`

effects
interpreted this way. See `Final`

.

writerToFinal :: (Member (Final m) r, MonadWriter o m) => Sem (Writer o ': r) a -> Sem r a Source #

Run a `Writer`

effect through a final `MonadWriter`

*Beware*: Effects that aren't interpreted in terms of the final
monad will have local state semantics in regards to `Writer`

effects
interpreted this way. See `Final`

.