rescue-0.3.0: library/Control/Monad/Raise/Constraint.hs
{-# 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)