symantic-lib-0.0.2.20170703: Symantics for common types.

Safe HaskellNone
LanguageHaskell2010

Language.Symantic.Lib.Monad

Contents

Description

Symantic for Monad.

Synopsis

Class Sym_Monad

class Sym_Monad term where Source #

Methods

return :: Monad m => term a -> term (m a) Source #

(>>=) :: Monad m => term (m a) -> term (a -> m b) -> term (m b) infixl 1 Source #

join :: Monad m => term (m (m a)) -> term (m a) Source #

when :: Applicative f => term Bool -> term (f ()) -> term (f ()) Source #

(>=>) :: Monad m => term (a -> m b) -> term (b -> m c) -> term (a -> m c) infixr 1 Source #

return :: Sym_Monad (UnT term) => Trans term => Monad m => term a -> term (m a) Source #

(>>=) :: Sym_Monad (UnT term) => Trans term => Monad m => term (m a) -> term (a -> m b) -> term (m b) infixl 1 Source #

join :: Sym_Monad (UnT term) => Trans term => Monad m => term (m (m a)) -> term (m a) Source #

when :: Sym_Monad (UnT term) => Trans term => Applicative f => term Bool -> term (f ()) -> term (f ()) Source #

(>=>) :: Sym_Monad (UnT term) => Trans term => Monad m => term (a -> m b) -> term (b -> m c) -> term (a -> m c) infixr 1 Source #

Instances

Sym_Monad Eval Source # 

Methods

return :: Monad m => Eval a -> Eval (m a) Source #

(>>=) :: Monad m => Eval (m a) -> Eval (a -> m b) -> Eval (m b) Source #

join :: Monad m => Eval (m (m a)) -> Eval (m a) Source #

when :: Applicative f => Eval Bool -> Eval (f ()) -> Eval (f ()) Source #

(>=>) :: Monad m => Eval (a -> m b) -> Eval (b -> m c) -> Eval (a -> m c) Source #

Sym_Monad View Source # 

Methods

return :: Monad m => View a -> View (m a) Source #

(>>=) :: Monad m => View (m a) -> View (a -> m b) -> View (m b) Source #

join :: Monad m => View (m (m a)) -> View (m a) Source #

when :: Applicative f => View Bool -> View (f ()) -> View (f ()) Source #

(>=>) :: Monad m => View (a -> m b) -> View (b -> m c) -> View (a -> m c) Source #

(Sym_Monad term, Sym_Lambda term) => Sym_Monad (BetaT term) Source # 

Methods

return :: Monad m => BetaT term a -> BetaT term (m a) Source #

(>>=) :: Monad m => BetaT term (m a) -> BetaT term (a -> m b) -> BetaT term (m b) Source #

join :: Monad m => BetaT term (m (m a)) -> BetaT term (m a) Source #

when :: Applicative f => BetaT term Bool -> BetaT term (f ()) -> BetaT term (f ()) Source #

(>=>) :: Monad m => BetaT term (a -> m b) -> BetaT term (b -> m c) -> BetaT term (a -> m c) Source #

(Sym_Monad r1, Sym_Monad r2) => Sym_Monad (Dup r1 r2) Source # 

Methods

return :: Monad m => Dup r1 r2 a -> Dup r1 r2 (m a) Source #

(>>=) :: Monad m => Dup r1 r2 (m a) -> Dup r1 r2 (a -> m b) -> Dup r1 r2 (m b) Source #

join :: Monad m => Dup r1 r2 (m (m a)) -> Dup r1 r2 (m a) Source #

when :: Applicative f => Dup r1 r2 Bool -> Dup r1 r2 (f ()) -> Dup r1 r2 (f ()) Source #

(>=>) :: Monad m => Dup r1 r2 (a -> m b) -> Dup r1 r2 (b -> m c) -> Dup r1 r2 (a -> m c) Source #

Types

tyMonad :: Source src => Type src vs m -> Type src vs (Monad m) Source #

m0 :: Source src => LenInj vs => KindInj (K m) => Type src (Proxy m ': vs) m Source #

m1 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (Proxy m ': vs)) m Source #

m2 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (b ': (Proxy m ': vs))) m Source #

m3 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (b ': (c ': (Proxy m ': vs)))) m Source #

Terms

teMonad_return :: TermDef Monad '[Proxy a, Proxy m] (Monad m #> (a -> m a)) Source #

teMonad_bind :: TermDef Monad '[Proxy a, Proxy b, Proxy m] (Monad m #> (m a -> (a -> m b) -> m b)) Source #

teMonad_join :: TermDef Monad '[Proxy a, Proxy m] (Monad m #> (m (m a) -> m a)) Source #

teMonad_kleisli_l2r :: TermDef Monad '[Proxy a, Proxy b, Proxy c, Proxy m] (Monad m #> ((a -> m b) -> (b -> m c) -> a -> m c)) Source #

teMonad_when :: TermDef Monad '[Proxy m] (Monad m #> (Bool -> m () -> m ())) Source #

Orphan instances

ClassInstancesFor ((* -> *) -> Constraint) Monad Source # 

Methods

proveConstraintFor :: Source src => proxy c -> Type Constraint src vs q -> Maybe (Qual q) #

TypeInstancesFor ((* -> *) -> Constraint) Monad Source # 

Methods

expandFamFor :: Source src => proxy c -> Len Type vs -> Const kt src fam -> Types src vs ts -> Maybe (Type kt src vs (Fam kt fam ts)) #

NameTyOf ((* -> *) -> Constraint) Monad Source # 

Methods

nameTyOf :: proxy c -> Mod NameTy #

isNameTyOp :: proxy c -> Bool #

FixityOf ((* -> *) -> Constraint) Monad Source # 

Methods

fixityOf :: proxy c -> Maybe Fixity #

(Source src, SymInj ((* -> *) -> Constraint) ss Monad) => ModuleFor ((* -> *) -> Constraint) src ss Monad Source # 

Methods

moduleFor :: (PathMod, Module ss Monad) #

Gram_Term_AtomsFor ((* -> *) -> Constraint) src ss g Monad Source # 

Methods

g_term_atomsFor :: [CF Monad (AST_Term ss g)] #