control-monad-exception: Explicitly typed exceptions
This package provides explicitly typed exceptions as a library.
Example
data Expr = Add Expr Expr | Div Expr Expr | Val Double eval (Val x) = return x eval (Add a1 a2) = do v1 <- eval a1 v2 <- eval a2 let sum = v1 + v2 if sum < v1 || sum < v2 then throw SumOverflow else return sum eval (Div a1 a2) = do v1 <- eval a1 v2 <- eval a2 if v2 == 0 then throw DivideByZero else return (v1 / v2)
data DivideByZero = DivideByZero deriving (Show, Typeable) data SumOverflow = SumOverflow deriving (Show, Typeable)
instance Exception DivideByZero instance Exception SumOverflow
GHCi infers the following types
eval :: (Throws DivideByZero l, Throws SumOverflow l) => Expr -> EM l Double eval `catch` \ (e::DivideByZero) -> return (-1) :: Throws SumOverflow l => Expr -> EM l Double runEM(eval `catch` \ (e::SomeException) -> return (-1)) :: Expr -> Double
Flags
Automatic Flags
Name | Description | Default |
---|---|---|
extensibleexceptions | Use extensible-exception package | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- control-monad-exception-0.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.1, 0.1.1, 0.1.2, 0.2, 0.3, 0.3.1, 0.3.2, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.8, 0.5, 0.6, 0.8.0, 0.8.0.1, 0.8.0.2, 0.8.0.3, 0.8.0.4, 0.9.0, 0.9.1, 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.10.3.1, 0.11.1, 0.11.2, 0.11.3, 0.11.4 |
---|---|
Dependencies | base (>=3.0 && <4 || >=4.0), extensible-exceptions (>=0.1 && <0.2), monads-fd (>=0.0 && <0.1), transformers (>=0.0.1 && <0.2) [details] |
License | LicenseRef-PublicDomain |
Author | Pepe Iborra |
Maintainer | pepeiborra@gmail.com |
Category | Control, Monads |
Home page | http://github.com/pepeiborra/control-monad-exception |
Uploaded | by PepeIborra at 2009-05-27T14:21:08Z |
Distributions | |
Reverse Dependencies | 8 direct, 1102 indirect [details] |
Downloads | 24982 total (126 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |