{-# language FlexibleContexts #-}
{-# language StandaloneKindSignatures #-}
{-# language TypeFamilies #-}
module Rel8.Table.Alternative
( AltTable ( (<|>:) )
, AlternativeTable ( emptyTable )
)
where
import Data.Kind ( Constraint, Type )
import Prelude ()
import Rel8.Expr ( Expr )
import Rel8.Table ( Table )
type AltTable :: (Type -> Type) -> Constraint
class AltTable f where
(<|>:) :: Table Expr a => f a -> f a -> f a
infixl 3 <|>:
type AlternativeTable :: (Type -> Type) -> Constraint
class AltTable f => AlternativeTable f where
emptyTable :: Table Expr a => f a