import Language.Symantic.Grammar
-- * Class 'Sym_Unit'
-type instance Sym (Proxy ()) = Sym_Unit
+type instance Sym () = Sym_Unit
class Sym_Unit term where
unit :: term ()
default unit :: Sym_Unit (UnT term) => Trans term => term ()
instance (Sym_Unit term, Sym_Lambda term) => Sym_Unit (BetaT term)
-- Typing
+instance NameTyOf () where
+ nameTyOf _c = [] `Mod` ""
instance ClassInstancesFor () where
proveConstraintFor _ (TyApp _ (TyConst _ _ q) z)
| Just HRefl <- proj_ConstKiTy @_ @() z
( Gram_Source src g
, Gram_Rule g
, Gram_Comment g
- , Inj_Sym ss ()
+ , SymInj ss ()
) => Gram_Term_AtomsFor src ss g () where
- g_term_atomsFor _t =
+ g_term_atomsFor =
[ rule "teUnit" $
- g_source $
- (\src -> BinTree0 $ Token_Term $ TermVT_CF $ (`setSource` src) $ teUnit)
+ source $
+ (\src -> BinTree0 $ Token_Term $ TermAVT $ (`setSource` src) $ teUnit)
<$ symbol "("
<* symbol ")"
]
instance ModuleFor src ss ()
-- ** 'Type's
-tyUnit :: Source src => Inj_Len vs => Type src vs ()
+tyUnit :: Source src => LenInj vs => Type src vs ()
tyUnit = tyConst @(K ()) @()
-- ** 'Term's
-teUnit ::
- Source src => Inj_Sym ss () =>
- Term src ss ts '[] ()
+teUnit :: TermDef () '[] (() #> ())
teUnit = Term noConstraint tyUnit $ teSym @() $ unit