c-expr-dsl-0.1.0.0: src/C/Expr/Syntax/TTG.hs
module C.Expr.Syntax.TTG (
Pass
-- * TTG-style type families
, XApp
, XVar
) where
import Data.Kind
{-------------------------------------------------------------------------------
Definition
-------------------------------------------------------------------------------}
-- | Kind of passes
--
-- Example:
--
-- > type Ps :: Pass
-- > data Ps a
type Pass = PassSimulatedOpenKind -> Type
-- | Internal type used only to simulate an open kind. Not exported.
data PassSimulatedOpenKind
{-------------------------------------------------------------------------------
TTG-style type families
-------------------------------------------------------------------------------}
type XApp :: Pass -> Type
type XVar :: Pass -> Type
data family XApp p
data family XVar p