cifl-math-library-1.1.1.0: Math libraries
Safe HaskellSafe-Inferred
LanguageHaskell2010

Math.Tools.Monad

Synopsis

Documentation

class Monad m => ModalMonad m where Source #

Methods

splitM :: m a -> m (m a) Source #

Instances

Instances details
Monoid a => ModalMonad ((->) a) Source # 
Instance details

Defined in Math.Tools.Monad

Methods

splitM :: (a -> a0) -> a -> (a -> a0) Source #

class Monad m => NegatableMonad m where Source #

Methods

negateM :: m a -> m a Source #

class Monad m => KnowledgeMonad m where Source #

Methods

knownM :: m a -> a Source #

Instances

Instances details
Monoid a => KnowledgeMonad ((->) a) Source # 
Instance details

Defined in Math.Tools.Monad

Methods

knownM :: (a -> a0) -> a0 Source #

newtype AdjM f g a Source #

Constructors

AdjM 

Fields

Instances

Instances details
(Applicative f, Applicative g) => Applicative (AdjM f g) Source # 
Instance details

Defined in Math.Tools.Monad

Methods

pure :: a -> AdjM f g a #

(<*>) :: AdjM f g (a -> b) -> AdjM f g a -> AdjM f g b #

liftA2 :: (a -> b -> c) -> AdjM f g a -> AdjM f g b -> AdjM f g c #

(*>) :: AdjM f g a -> AdjM f g b -> AdjM f g b #

(<*) :: AdjM f g a -> AdjM f g b -> AdjM f g a #

(Functor f, Functor g) => Functor (AdjM f g) Source # 
Instance details

Defined in Math.Tools.Monad

Methods

fmap :: (a -> b) -> AdjM f g a -> AdjM f g b #

(<$) :: a -> AdjM f g b -> AdjM f g a #

(Adjunction f g, Applicative f, Applicative g) => Monad (AdjM f g) Source # 
Instance details

Defined in Math.Tools.Monad

Methods

(>>=) :: AdjM f g a -> (a -> AdjM f g b) -> AdjM f g b #

(>>) :: AdjM f g a -> AdjM f g b -> AdjM f g b #

return :: a -> AdjM f g a #

Adjunction g f => Comonad (AdjM f g) Source # 
Instance details

Defined in Math.Tools.Monad

Methods

extract :: AdjM f g a -> a Source #

duplicate :: AdjM f g a -> AdjM f g (AdjM f g a) Source #

extend :: (AdjM f g a -> b) -> AdjM f g a -> AdjM f g b Source #

(=>>) :: AdjM f g a -> (AdjM f g a -> b) -> AdjM f g b Source #

(.>>) :: AdjM f g a -> b -> AdjM f g b Source #

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

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

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

type from tweet by Chris Martin, but well known.

fromMaybeM :: MonadFail m => Maybe a -> m a Source #

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

join3 :: Monad m => m (m (m b)) -> m b Source #

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

This is strange, you can remove arbitrary monad with this.

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