Safe Haskell | None |
---|---|
Language | Haskell2010 |
Symantic for Monad
.
Synopsis
- class Sym_Monad term where
- tyMonad :: Source src => Type src vs m -> Type src vs (Monad m)
- m0 :: Source src => LenInj vs => KindInj (K m) => Type src (Proxy m ': vs) m
- m1 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (Proxy m ': vs)) m
- m2 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (b ': (Proxy m ': vs))) m
- m3 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (b ': (c ': (Proxy m ': vs)))) m
- teMonad_return :: TermDef Monad '[Proxy a, Proxy m] (Monad m #> (a -> m a))
- teMonad_bind :: TermDef Monad '[Proxy a, Proxy b, Proxy m] (Monad m #> (m a -> (a -> m b) -> m b))
- teMonad_join :: TermDef Monad '[Proxy a, Proxy m] (Monad m #> (m (m a) -> m a))
- teMonad_kleisli_l2r :: TermDef Monad '[Proxy a, Proxy b, Proxy c, Proxy m] (Monad m #> ((a -> m b) -> (b -> m c) -> a -> m c))
- teMonad_when :: TermDef Monad '[Proxy m] (Monad m #> (Bool -> m () -> m ()))
Class Sym_Monad
class Sym_Monad term where Source #
Nothing
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 View Source # | |
Defined in Language.Symantic.Lib.Monad 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 Eval Source # | |
Defined in Language.Symantic.Lib.Monad 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 term, Sym_Lambda term) => Sym_Monad (BetaT term) Source # | |
Defined in Language.Symantic.Lib.Monad 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 # | |
Defined in Language.Symantic.Lib.Monad 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 # |
Type
s
m3 :: Source src => LenInj vs => KindInj (K m) => Type src (a ': (b ': (c ': (Proxy m ': vs)))) m Source #
Term
s
teMonad_bind :: TermDef Monad '[Proxy a, Proxy b, Proxy m] (Monad m #> (m a -> (a -> m b) -> m b)) 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 #