Control.Failure

failure-0.1.0.1: A simple type class for success/failure computations.

Safe Haskell | Safe
Language | Haskell98

Control.Failure

Contents

- Type class
- Wrapping failures
- Convenience `String` failure
- Convert `Failure`s into concrete types

Description

Type classes for returning failures.

Synopsis

- class Monad f => Failure e f where
  - failure :: e -> f v
- class Failure e f => WrapFailure e f where
  - wrapFailure :: (forall eIn. Exception eIn => eIn -> e) -> f a -> f a
- newtype StringException = StringException String
- failureString :: Failure StringException m => String -> m a
- class Try f where
  - type Error f
  - try :: Failure (Error f) f' => f a -> f' a
- data NothingException = NothingException
- data NullException = NullException

# Type class

class Monad f => Failure e f where

Methods

failure :: e -> f v

Instances

Exception e => Failure e IO |
Failure e [] |
Failure e Maybe |

# Wrapping failures

class Failure e f => WrapFailure e f where

Methods

wrapFailure :: (forall eIn. Exception eIn => eIn -> e) -> f a -> f a

Wrap the failure value, if any, with the given function. This is useful in particular when you want all the exceptions returned from a certain library to be of a certain type, even if they were generated by a different library.

Instances

Exception e => WrapFailure e IO |

# Convenience `String` failure

newtype StringException

Constructors

StringException String |

Instances

Show StringException |
Exception StringException |

failureString :: Failure StringException m => String -> m a

Call `failure` with a `String`.

# Convert `Failure`s into concrete types

class Try f where

Associated Types

type Error f

Methods

try :: Failure (Error f) f' => f a -> f' a

Instances

Try [] |
Try Maybe |
Try (Either e) |

data NothingException

Constructors

NothingException |

Instances

Show NothingException |
Exception NothingException |

data NullException

Constructors

NullException |

Instances

Show NullException |
Exception NullException |