{-# language DataKinds #-}
{-# language FlexibleInstances #-}
{-# language FunctionalDependencies #-}
{-# language StandaloneKindSignatures #-}
{-# language TypeFamilies #-}
{-# language UndecidableInstances #-}
module Rel8.Table.Transpose
( Transposes
)
where
import Data.Kind ( Constraint, Type )
import Prelude ()
import qualified Rel8.Schema.Kind as K
import Rel8.Table ( Table, Transpose, Congruent )
type Transposes :: K.Context -> K.Context -> Type -> Type -> Constraint
class
( Table from a
, Table to b
, Congruent a b
, b ~ Transpose to a
, a ~ Transpose from b
)
=> Transposes from to a b
| a -> from
, b -> to
, a to -> b
, b from -> a
instance
( Table from a
, Table to b
, Congruent a b
, b ~ Transpose to a
, a ~ Transpose from b
)
=> Transposes from to a b