control-monad-exception-0.4: Explicitly typed, checked exceptions with stack traces

The control-monad-exception package

This package provides explicitly typed, checked 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 New in version 0.4: * (optionally) Unchecked exceptions (with 'UncaughtException') * Exception stack traces (with 'WithSrcLoc')

Properties

Versions0.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
Dependenciesbase (≥3.0 & <4), extensible-exceptions (0.1.*), monads-fd (0.0.*), pretty, template-haskell, transformers (≥0.0.1 & <0.2) or
base (≥3.0 & <4), extensible-exceptions (0.1.*), mtl, pretty, template-haskell or
base (4.*), monads-fd (0.0.*), pretty, template-haskell, transformers (≥0.0.1 & <0.2) or
base (4.*), mtl, pretty, template-haskell
LicensePublicDomain
AuthorPepe Iborra
Maintainerpepeiborra@gmail.com
Stabilityexperimental
CategoryControl, Monads
Home pagehttp://safe-tools.dsic.upv.es/mediawiki/index.php/Jose_Iborra/Papers/Exceptions
Upload dateWed Sep 16 10:29:12 UTC 2009
Uploaded byPepeIborra
Build failureghc-6.10 (log), ghc-6.12 (log)

Modules

Downloads