import Language.Symantic.Lib.Integral (tyIntegral)
-- * Class 'Sym_Ratio'
-type instance Sym (Proxy Ratio) = Sym_Ratio
+type instance Sym Ratio = Sym_Ratio
class Sym_Ratio term where
ratio :: Integral a => term a -> term a -> term (Ratio a)
numerator :: term (Ratio a) -> term a
instance (Sym_Ratio term, Sym_Lambda term) => Sym_Ratio (BetaT term)
-- Typing
+instance NameTyOf Ratio where
+ nameTyOf _c = ["Ratio"] `Mod` "Ratio"
instance FixityOf Ratio
instance ClassInstancesFor Ratio where
proveConstraintFor _ (TyApp _ tq@(TyConst _ _ q) (TyApp _ c a))
-- Compiling
instance Gram_Term_AtomsFor src ss g Ratio
-instance (Source src, Inj_Sym ss Ratio) => ModuleFor src ss Ratio where
+instance (Source src, SymInj ss Ratio) => ModuleFor src ss Ratio where
moduleFor = ["Ratio"] `moduleWhere`
[ "ratio" := teRatio
, "numerator" := teRatio_numerator