effin-0.1.1.0: A Typeable-free implementation of extensible effects

Safe HaskellNone
LanguageHaskell2010

Control.Effect.Exception

Synopsis

Documentation

type EffectException e es = (Member (Exception e) es, e ~ ExceptionType es) Source

data Exception e a Source

An effect that describes the possibility of failure.

Instances

runException :: Effect (Exception e : es) a -> Effect es (Either e a) Source

Completely handles an exception effect.

raise :: EffectException e es => e -> Effect es a Source

Raises an exception.

except :: EffectException e es => Effect es a -> (e -> Effect es a) -> Effect es a Source

Handles an exception. Intended to be used in infix form.

myComputation `except` \ex -> doSomethingWith ex

finally :: EffectException e es => Effect es a -> Effect es () -> Effect es a Source

Ensures that a computation is run after another one completes, regardless of whether an exception was raised. Intended to be used in infix form.

do x <- loadSomeResource

   doSomethingWith x `finally` unload x