import Language.Symantic.Lib.MonoFunctor (Element)
-- * Class 'Sym_Text'
-type instance Sym (Proxy Text) = Sym_Text
+type instance Sym Text = Sym_Text
class Sym_Text term where
text :: Text -> term Text
default text :: Sym_Text (UnT term) => Trans term => Text -> term Text
instance (Sym_Text term, Sym_Lambda term) => Sym_Text (BetaT term)
-- Typing
+instance NameTyOf Text where
+ nameTyOf _c = ["Text"] `Mod` "Text"
instance ClassInstancesFor Text where
- proveConstraintFor _ (TyApp _ (TyConst _ _ q) c)
+ proveConstraintFor _ (TyConst _ _ q :$ c)
| Just HRefl <- proj_ConstKiTy @_ @Text c
= case () of
- _ | Just Refl <- proj_Const @Eq q -> Just Dict
- | Just Refl <- proj_Const @MT.MonoFoldable q -> Just Dict
- | Just Refl <- proj_Const @MT.MonoFunctor q -> Just Dict
- | Just Refl <- proj_Const @Monoid q -> Just Dict
- | Just Refl <- proj_Const @Ord q -> Just Dict
- | Just Refl <- proj_Const @Seqs.IsSequence q -> Just Dict
+ _ | Just Refl <- proj_Const @Eq q -> Just Dict
+ | Just Refl <- proj_Const @MT.MonoFoldable q -> Just Dict
+ | Just Refl <- proj_Const @MT.MonoFunctor q -> Just Dict
+ | Just Refl <- proj_Const @Monoid q -> Just Dict
+ | Just Refl <- proj_Const @Ord q -> Just Dict
+ | Just Refl <- proj_Const @Seqs.IsSequence q -> Just Dict
| Just Refl <- proj_Const @Seqs.SemiSequence q -> Just Dict
- | Just Refl <- proj_Const @Show q -> Just Dict
+ | Just Refl <- proj_Const @Show q -> Just Dict
_ -> Nothing
proveConstraintFor _c _q = Nothing
instance TypeInstancesFor Text where
instance ModuleFor src ss Text
-- ** 'Type's
-tyText :: Source src => Inj_Len vs => Type src vs Text
+tyText :: Source src => LenInj vs => Type src vs Text
tyText = tyConst @(K Text) @Text
-- ** 'Term's
-teText :: Source src => Inj_Sym ss Text => Text -> Term src ss ts '[] Text
+teText :: Source src => SymInj ss Text => Text -> Term src ss ts '[] (() #> Text)
teText t = Term noConstraint tyText $ teSym @Text $ text t