{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE UndecidableInstances #-}
module Data.WorldPeace.Subset.Class.Internal (Subset' (..)) where
import Data.Kind
import Data.Proxy
import Data.WorldPeace
class Subset' (flag :: Bool) (err :: Type) (errs :: [Type]) where
include' :: Proxy flag -> err -> OpenUnion errs
instance Contains err errs => Subset' 'True (OpenUnion err) errs where
include' _ = relaxOpenUnion
instance IsMember err errs => Subset' 'False err errs where
include' _ = openUnionLift