effect-monad-0.8.1.0: Embeds effect systems and program logics into Haskell using graded monads and parameterised monads

Safe HaskellNone
LanguageHaskell98

Control.Effect.Monad

Synopsis

Documentation

data Monad m f a where Source #

All monads are parametric effect monads with a trivial singleton-monoid index. This wrapper wraps normal monads into the Effect interface using the M contructor.

Wrap regular monads up

Constructors

Wrap :: Monad m => m a -> Monad m () a 

Instances

Monad m => Effect * (Monad m) Source # 

Associated Types

type Unit (Monad m) (m :: Monad m -> * -> *) :: k Source #

type Plus (Monad m) (m :: Monad m -> * -> *) (f :: Monad m) (g :: Monad m) :: k Source #

type Inv (Monad m) (m :: Monad m -> * -> *) (f :: Monad m) (g :: Monad m) :: Constraint Source #

Methods

return :: a -> m (Unit (Monad m) m) a Source #

(>>=) :: Inv (Monad m) m f g => m f a -> (a -> m g b) -> m (Plus (Monad m) m f g) b Source #

(>>) :: Inv (Monad m) m f g => m f a -> m g b -> m (Plus (Monad m) m f g) b Source #

type Unit * (Monad m) Source # 
type Unit * (Monad m) = ()
type Plus * (Monad m) s t Source # 
type Plus * (Monad m) s t = ()
type Inv * (Monad m) s t Source # 
type Inv * (Monad m) s t = ()

unWrap :: Monad m => Monad m f a -> m a Source #

Unwrap a monad