unique-logic-0.4: Solve simple simultaneous equations

Safe HaskellSafe
LanguageHaskell98

UniqueLogic.ST.MonadTrans

Synopsis

Documentation

class MonadTrans t => C t where Source #

Provide the methods that make a transformed monad a monad.

Minimal complete definition

point, bind

Methods

point :: Monad m => a -> t m a Source #

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

Instances

C MaybeT Source # 

Methods

point :: Monad m => a -> MaybeT m a Source #

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

C Track Source # 

Methods

point :: Monad m => a -> Track m a Source #

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

C (ExceptionalT e) Source # 

Methods

point :: Monad m => a -> ExceptionalT e m a Source #

bind :: Monad m => ExceptionalT e m a -> (a -> ExceptionalT e m b) -> ExceptionalT e m b Source #

Monoid w => C (WriterT w) Source # 

Methods

point :: Monad m => a -> WriterT w m a Source #

bind :: Monad m => WriterT w m a -> (a -> WriterT w m b) -> WriterT w m b Source #

C (IdentityT *) Source # 

Methods

point :: Monad m => a -> IdentityT * m a Source #

bind :: Monad m => IdentityT * m a -> (a -> IdentityT * m b) -> IdentityT * m b Source #

newtype Wrap t m a Source #

Build a regular monad for generic monad transformer and monad. The Const type allows us to force the kind (m :: * -> *) without using ExplicitKindSignatures.

Constructors

Wrap (Const (t m a) (m a)) 

Instances

(C t, Monad m) => Monad (Wrap t m) Source # 

Methods

(>>=) :: Wrap t m a -> (a -> Wrap t m b) -> Wrap t m b #

(>>) :: Wrap t m a -> Wrap t m b -> Wrap t m b #

return :: a -> Wrap t m a #

fail :: String -> Wrap t m a #

(C t, Monad m) => Functor (Wrap t m) Source # 

Methods

fmap :: (a -> b) -> Wrap t m a -> Wrap t m b #

(<$) :: a -> Wrap t m b -> Wrap t m a #

(C t, Monad m) => Applicative (Wrap t m) Source # 

Methods

pure :: a -> Wrap t m a #

(<*>) :: Wrap t m (a -> b) -> Wrap t m a -> Wrap t m b #

liftA2 :: (a -> b -> c) -> Wrap t m a -> Wrap t m b -> Wrap t m c #

(*>) :: Wrap t m a -> Wrap t m b -> Wrap t m b #

(<*) :: Wrap t m a -> Wrap t m b -> Wrap t m a #

wrap :: t m a -> Wrap t m a Source #

unwrap :: Wrap t m a -> t m a Source #

lift :: (C t, Monad m) => m a -> Wrap t m a Source #