{-# 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' :: Proxy 'True -> OpenUnion err -> OpenUnion errs
include' Proxy 'True
_ = OpenUnion err -> OpenUnion errs
forall (as :: [*]) (bs :: [*]).
Contains as bs =>
OpenUnion as -> OpenUnion bs
relaxOpenUnion
instance IsMember err errs => Subset' 'False err errs where
include' :: Proxy 'False -> err -> OpenUnion errs
include' Proxy 'False
_ = err -> OpenUnion errs
forall a (as :: [*]). IsMember a as => a -> OpenUnion as
openUnionLift