import Language.Symantic.Lib.Integral (tyIntegral)
-- * Class 'Sym_Semigroup'
-type instance Sym (Proxy Semigroup) = Sym_Semigroup
+type instance Sym Semigroup = Sym_Semigroup
class Sym_Semigroup term where
(<>) :: Semigroup a => term a -> term a -> term a
stimes :: (Semigroup a, Integral b) => term b -> term a -> term a
instance (Sym_Semigroup term, Sym_Lambda term) => Sym_Semigroup (BetaT term)
-- Typing
+instance NameTyOf Semigroup where
+ nameTyOf _c = ["Semigroup"] `Mod` "Semigroup"
instance FixityOf Semigroup
instance ClassInstancesFor Semigroup
instance TypeInstancesFor Semigroup
-- Compiling
instance Gram_Term_AtomsFor src ss g Semigroup
-instance (Source src, Inj_Sym ss Semigroup) => Module src ss Semigroup where
- module_ _s = [] `moduleWhere`
+instance (Source src, SymInj ss Semigroup) => ModuleFor src ss Semigroup where
+ moduleFor = ["Semigroup"] `moduleWhere`
[ "<>" `withInfixR` 6 := teSemigroup_sappend
, "stimes" := teSemigroup_stimes
]