Copyright | (c) Marcus Völker 2017 |
---|---|

License | MIT |

Maintainer | marcus.voelker@rwth-aachen.de |

Safe Haskell | Safe |

Language | Haskell2010 |

This module describes DoubleContinuations, which are Continuations that may have succeeded or failed. Instead of just taking a single function (a -> r) -> r to execute after the computation has run, a double continuation takes two functions: one to call in case of success and one to call in case of error This allows for easy implementation of exception handling and structuring control flow in a pass/fail manner

# Documentation

The double continuation. Takes two functions, one to invoke if the computation is successful, one if it errors

Monad (DCont r e) Source # | Binding a Continuation means running it, then feeding the result into f to generate a new continuation, and running that |

Functor (DCont r e) Source # | via Monad/Functor laws |

Applicative (DCont r e) Source # | via Monad/Applicative laws |

Alternative (DCont r e) Source # | An empty alternative just fails with an undefined error. Branching means first trying one, and in case of failure, the other |

:: e | The error to return |

-> DCont r e a |

Generates a continuation that always fails. For a continuation that always succeeds, see return