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

Language | Haskell2010 |

## Synopsis

- data Error e m a where
- throw :: forall e r a. MemberWithError (Error e) r => e -> Sem r a
- catch :: forall e r a. MemberWithError (Error e) r => Sem r a -> (e -> Sem r a) -> Sem r a
- fromEither :: Member (Error e) r => Either e a -> Sem r a
- fromEitherM :: forall e m r a. (Member (Error e) r, Member (Embed m) r) => m (Either e a) -> Sem r a
- fromException :: forall e r a. (Exception e, Member (Error e) r, Member (Embed IO) r) => IO a -> Sem r a
- fromExceptionVia :: (Exception exc, Member (Error err) r, Member (Embed IO) r) => (exc -> err) -> IO a -> Sem r a
- fromExceptionSem :: forall e r a. (Exception e, Member (Error e) r, Member (Final IO) r) => Sem r a -> Sem r a
- fromExceptionSemVia :: (Exception exc, Member (Error err) r, Member (Final IO) r) => (exc -> err) -> Sem r a -> Sem r a
- note :: Member (Error e) r => e -> Maybe a -> Sem r a
- try :: Member (Error e) r => Sem r a -> Sem r (Either e a)
- tryJust :: Member (Error e) r => (e -> Maybe b) -> Sem r a -> Sem r (Either b a)
- catchJust :: Member (Error e) r => (e -> Maybe b) -> Sem r a -> (b -> Sem r a) -> Sem r a
- runError :: Sem (Error e ': r) a -> Sem r (Either e a)
- mapError :: forall e1 e2 r a. Member (Error e2) r => (e1 -> e2) -> Sem (Error e1 ': r) a -> Sem r a
- errorToIOFinal :: (Typeable e, Member (Final IO) r) => Sem (Error e ': r) a -> Sem r (Either e a)
- lowerError :: (Typeable e, Member (Embed IO) r) => (forall x. Sem r x -> IO x) -> Sem (Error e ': r) a -> Sem r (Either e a)

# Effect

data Error e m a where Source #

## Instances

type DefiningModule (Error :: Type -> (k -> Type) -> k -> Type) Source # | |

Defined in Polysemy.Error |

# Actions

fromEitherM :: forall e m r a. (Member (Error e) r, Member (Embed m) r) => m (Either e a) -> Sem r a Source #

A combinator doing `embed`

and `fromEither`

at the same time. Useful for
interoperating with `IO`

.

*Since: 0.5.1.0*

fromException :: forall e r a. (Exception e, Member (Error e) r, Member (Embed IO) r) => IO a -> Sem r a Source #

fromExceptionVia :: (Exception exc, Member (Error err) r, Member (Embed IO) r) => (exc -> err) -> IO a -> Sem r a Source #

Like `fromException`

, but with the ability to transform the exception
before turning it into an `Error`

.

fromExceptionSem :: forall e r a. (Exception e, Member (Error e) r, Member (Final IO) r) => Sem r a -> Sem r a Source #

fromExceptionSemVia :: (Exception exc, Member (Error err) r, Member (Final IO) r) => (exc -> err) -> Sem r a -> Sem r a Source #

Like `fromExceptionSem`

, but with the ability to transform the exception
before turning it into an `Error`

.

# Interpretations

mapError :: forall e1 e2 r a. Member (Error e2) r => (e1 -> e2) -> Sem (Error e1 ': r) a -> Sem r a Source #

Transform one `Error`

into another. This function can be used to aggregate
multiple errors into a single type.

*Since: 1.0.0.0*

errorToIOFinal :: (Typeable e, Member (Final IO) r) => Sem (Error e ': r) a -> Sem r (Either e a) Source #

:: (Typeable e, Member (Embed IO) r) | |

=> (forall x. Sem r x -> IO x) | Strategy for lowering a |

-> Sem (Error e ': r) a | |

-> Sem r (Either e a) |

Deprecated: Use `errorToIOFinal`

instead

Run an `Error`

effect as an `IO`

`Exception`

. This interpretation is
significantly faster than `runError`

, at the cost of being less flexible.

*Since: 1.0.0.0*