Add tar GNUmakefile target.
[haskell/symantic.git] / symantic-lib / Language / Symantic / Lib / MonoFoldable.hs
index 09088b1ea19f97dd1506a85f8d7e99a7b46731f9..9effe21f3c8ef55f0b3232b1e6cdb77ae569f595 100644 (file)
@@ -15,7 +15,7 @@ import Language.Symantic.Lib.MonoFunctor (famElement, o0, e1)
 import Language.Symantic.Lib.Monoid (tyMonoid)
 
 -- * Class 'Sym_MonoFoldable'
-type instance Sym (Proxy MonoFoldable) = Sym_MonoFoldable
+type instance Sym MonoFoldable = Sym_MonoFoldable
 class Sym_MonoFoldable term where
        ofoldMap :: (MonoFoldable o, Monoid m) => term (MT.Element o -> m) -> term o -> term m
        ofoldr   :: MonoFoldable o => term (MT.Element o -> b -> b) -> term b -> term o -> term b
@@ -75,14 +75,16 @@ instance (Sym_MonoFoldable r1, Sym_MonoFoldable r2) => Sym_MonoFoldable (Dup r1
 instance (Sym_MonoFoldable term, Sym_Lambda term) => Sym_MonoFoldable (BetaT term)
 
 -- Typing
+instance NameTyOf MonoFoldable where
+       nameTyOf _c = ["MonoFoldable"] `Mod` "MonoFoldable"
 instance FixityOf MonoFoldable
 instance ClassInstancesFor MonoFoldable
 instance TypeInstancesFor MonoFoldable
 
 -- Compiling
 instance Gram_Term_AtomsFor src ss g MonoFoldable
-instance (Source src, Inj_Sym ss MonoFoldable) => ModuleFor src ss MonoFoldable where
-       moduleFor _s = ["MonoFoldable"] `moduleWhere`
+instance (Source src, SymInj ss MonoFoldable) => ModuleFor src ss MonoFoldable where
+       moduleFor = ["MonoFoldable"] `moduleWhere`
         [ "ofoldMap" := teMonoFoldable_ofoldMap
         , "otoList"  := teMonoFoldable_otoList
         , "ofoldr"   := teMonoFoldable_ofoldr
@@ -101,7 +103,7 @@ tyMonoFoldable a = tyConstLen @(K MonoFoldable) @MonoFoldable (lenVars a) `tyApp
 teMonoFoldable_ofoldMap :: TermDef MonoFoldable '[Proxy o, Proxy e, Proxy m] (MonoFoldable o # Monoid m # e #~ MT.Element o #> ((e -> m) -> o -> m))
 teMonoFoldable_ofoldMap = Term (tyMonoFoldable o0 # tyMonoid m # e1 #~ famElement o0) ((e1 ~> m) ~> o0 ~> m) $ teSym @MonoFoldable $ lam2 ofoldMap
        where
-       m :: Source src => Inj_Len vs => Inj_Kind (K m) => Type src (Proxy a ': Proxy b ': Proxy m ': vs) m
+       m :: Source src => LenInj vs => KindInj (K m) => Type src (Proxy a ': Proxy b ': Proxy m ': vs) m
        m = tyVar "m" $ VarS $ VarS varZ
 
 teMonoFoldable_otoList :: TermDef MonoFoldable '[Proxy o, Proxy e] (MonoFoldable o # e #~ MT.Element o #> (o -> [MT.Element o]))
@@ -110,13 +112,13 @@ teMonoFoldable_otoList = Term (tyMonoFoldable o0 # e1 #~ famElement o0) (o0 ~> t
 teMonoFoldable_ofoldr :: TermDef MonoFoldable '[Proxy o, Proxy e, Proxy a] (MonoFoldable o # e #~ MT.Element o #> ((e -> a -> a) -> a -> o -> a))
 teMonoFoldable_ofoldr = Term (tyMonoFoldable o0 # e1 #~ famElement o0) ((e1 ~> a ~> a) ~> a ~> o0 ~> a) $ teSym @MonoFoldable $ lam1 $ \f -> lam $ lam . ofoldr f
        where
-       a :: Source src => Inj_Len vs => Inj_Kind (K a) => Type src (Proxy _a ': Proxy b ': Proxy a ': vs) a
+       a :: Source src => LenInj vs => KindInj (K a) => Type src (Proxy _a ': Proxy b ': Proxy a ': vs) a
        a = tyVar "a" $ VarS $ VarS varZ
 
 teMonoFoldable_ofoldl' :: TermDef MonoFoldable '[Proxy o, Proxy e, Proxy a] (MonoFoldable o # e #~ MT.Element o #> ((a -> e -> a) -> a -> o -> a))
 teMonoFoldable_ofoldl' = Term (tyMonoFoldable o0 # e1 #~ famElement o0) ((a ~> e1 ~> a) ~> a ~> o0 ~> a) $ teSym @MonoFoldable $ lam1 $ \f -> lam $ lam . ofoldl' f
        where
-       a :: Source src => Inj_Len vs => Inj_Kind (K a) => Type src (Proxy _a ': Proxy b ': Proxy a ': vs) a
+       a :: Source src => LenInj vs => KindInj (K a) => Type src (Proxy _a ': Proxy b ': Proxy a ': vs) a
        a = tyVar "a" $ VarS $ VarS varZ
 
 teMonoFoldable_olength :: TermDef MonoFoldable '[Proxy o, Proxy e] (MonoFoldable o # e #~ MT.Element o #> (o -> Int))