{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} -- | Declare which exceptions may be raised/rescued in a given context module Control.Monad.Raise.Constraint ( -- * Permissive Raises , RaisesAtLeast -- * Precise , RaisesOnly , RaisesOne ) where import Control.Monad.Raise.Class import Data.WorldPeace import Data.WorldPeace.Subset.Class -- | Raises this exception, but potentially others type Raises m err = Subset err (ErrorCase m) -- | May raise errors, including the provided list type RaisesAtLeast m errs = Subset (OpenUnion errs) (ErrorCase m) -- | Restrict exceptions to exactly this list type RaisesOnly m errs = errs ~ Errors m -- | Raises an exception, guaranteed to NOT be the outer union type RaisesOne m err = IsMember err (Errors m)