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