effects-0.1: src/Control/Effects/Error.hs
{-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleContexts #-}
module Control.Effects.Error where
import Control.Effects
import Data.Void
throwError :: (c ~ ContT ((e -> m r) -> m r) m, AutoLift c n, Monad m) => Proxy c -> e -> n Void
throwError p e = operation p $ \_ -> return $ \h -> h e
catchError :: Monad m => (e -> m a) -> Handler ((e -> m a) -> m a) a m a
catchError h = Handler
{ ret = return . return . return
, fin = \f -> f h
}