grammar: rename At -> Sourced
[haskell/symantic.git] / symantic-lib / Language / Symantic / Lib / Monad.hs
index 02b7336f2b44ea6be9282e9f95f339727d14c45f..be0a36b98b01fc13602ee6f2279ec6310ac4e9b0 100644 (file)
@@ -14,7 +14,7 @@ import Language.Symantic.Lib.Unit (tyUnit)
 import Language.Symantic.Lib.Bool (tyBool)
 
 -- * Class 'Sym_Monad'
-type instance Sym (Proxy Monad) = Sym_Monad
+type instance Sym Monad = Sym_Monad
 class Sym_Monad term where
        return :: Monad m       => term a -> term (m a)
        (>>=)  :: Monad m       => term (m a) -> term (a -> m b) -> term (m b); infixl 1 >>=
@@ -58,14 +58,16 @@ instance (Sym_Monad r1, Sym_Monad r2) => Sym_Monad (Dup r1 r2) where
 instance (Sym_Monad term, Sym_Lambda term) => Sym_Monad (BetaT term)
 
 -- Typing
+instance NameTyOf Monad where
+       nameTyOf _c = ["Monad"] `Mod` "Monad"
 instance FixityOf Monad
 instance ClassInstancesFor Monad
 instance TypeInstancesFor Monad
 
 -- Compiling
 instance Gram_Term_AtomsFor src ss g Monad
-instance (Source src, Inj_Sym ss Monad) => ModuleFor src ss Monad where
-       moduleFor _s = ["Monad"] `moduleWhere`
+instance (Source src, SymInj ss Monad) => ModuleFor src ss Monad where
+       moduleFor = ["Monad"] `moduleWhere`
         [ "return" := teMonad_return
         , "join"   := teMonad_join
         , "when"   := teMonad_when
@@ -77,19 +79,19 @@ instance (Source src, Inj_Sym ss Monad) => ModuleFor src ss Monad where
 tyMonad :: Source src => Type src vs m -> Type src vs (Monad m)
 tyMonad m = tyConstLen @(K Monad) @Monad (lenVars m) `tyApp` m
 
-m0 :: Source src => Inj_Len vs => Inj_Kind (K m) =>
+m0 :: Source src => LenInj vs => KindInj (K m) =>
      Type src (Proxy m ': vs) m
 m0 = tyVar "m" varZ
 
-m1 :: Source src => Inj_Len vs => Inj_Kind (K m) =>
+m1 :: Source src => LenInj vs => KindInj (K m) =>
      Type src (a ': Proxy m ': vs) m
 m1 = tyVar "m" $ VarS varZ
 
-m2 :: Source src => Inj_Len vs => Inj_Kind (K m) =>
+m2 :: Source src => LenInj vs => KindInj (K m) =>
      Type src (a ': b ': Proxy m ': vs) m
 m2 = tyVar "m" $ VarS $ VarS varZ
 
-m3 :: Source src => Inj_Len vs => Inj_Kind (K m) =>
+m3 :: Source src => LenInj vs => KindInj (K m) =>
      Type src (a ': b ': c ': Proxy m ': vs) m
 m3 = tyVar "m" $ VarS $ VarS $ VarS varZ