import Language.Symantic.Lib.Ratio (tyRatio)
-- * Class 'Sym_Real'
-type instance Sym (Proxy Real) = Sym_Real
+type instance Sym Real = Sym_Real
class Sym_Real term where
toRational :: Real a => term a -> term Rational
default toRational :: Sym_Real (UnT term) => Trans term => Real a => term a -> term Rational
instance (Sym_Real term, Sym_Lambda term) => Sym_Real (BetaT term)
-- Typing
+instance NameTyOf Real where
+ nameTyOf _c = ["Real"] `Mod` "Real"
instance FixityOf Real
instance ClassInstancesFor Real
instance TypeInstancesFor Real
-- Compiling
instance Gram_Term_AtomsFor src ss g Real
-instance (Source src, Inj_Sym ss Real) => ModuleFor src ss Real where
+instance (Source src, SymInj ss Real) => ModuleFor src ss Real where
moduleFor = ["Real"] `moduleWhere`
[ "toRational" := teReal_toRational
]
tyReal :: Source src => Type src vs a -> Type src vs (Real a)
tyReal a = tyConstLen @(K Real) @Real (lenVars a) `tyApp` a
-tyRational :: Source src => Inj_Len vs => Type src vs Rational
+tyRational :: Source src => LenInj vs => Type src vs Rational
tyRational = tyRatio tyInteger
-- ** 'Term's