category-0.2.1.0: Categorical types and classes

Safe HaskellNone
LanguageHaskell2010

Control.Categorical.Monad

Documentation

class Endofunctor s m => Monad s m where Source #

Minimal complete definition

unit

Methods

unit :: a `s` m a Source #

join :: m (m a) `s` m a Source #

bind :: (a `s` m b) -> m a `s` m b Source #

Instances
Monad m => Monad ((->) :: Type -> Type -> Type) (m :: Type -> Type) Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

unit :: a -> m a Source #

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

bind :: (a -> m b) -> m a -> m b Source #

(<=<) :: Monad s m => (b `s` m c) -> (a `s` m b) -> a `s` m c infixr 1 Source #

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

newtype Kleisli s m a b Source #

Constructors

Kleisli 

Fields

Instances
Monad s m => Category (Kleisli s m :: k -> k -> Type) Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

id :: Kleisli s m a a #

(.) :: Kleisli s m b c -> Kleisli s m a b -> Kleisli s m a c #

class Endofunctor s ɯ => Comonad s ɯ where Source #

Minimal complete definition

counit

Methods

counit :: ɯ a `s` a Source #

cut :: ɯ a `s` ɯ (ɯ a) Source #

cobind :: (ɯ a `s` b) -> ɯ a `s` ɯ b Source #

Instances
Comonad ((->) :: Type -> Type -> Type) Identity Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

counit :: Identity a -> a Source #

cut :: Identity a -> Identity (Identity a) Source #

cobind :: (Identity a -> b) -> Identity a -> Identity b Source #

Comonad ((->) :: Type -> Type -> Type) NonEmpty Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

counit :: NonEmpty a -> a Source #

cut :: NonEmpty a -> NonEmpty (NonEmpty a) Source #

cobind :: (NonEmpty a -> b) -> NonEmpty a -> NonEmpty b Source #

Comonad ((->) :: Type -> Type -> Type) ((,) a :: Type -> Type) Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

counit :: (a, a0) -> a0 Source #

cut :: (a, a0) -> (a, (a, a0)) Source #

cobind :: ((a, a0) -> b) -> (a, a0) -> (a, b) Source #

Comonad ((->) :: Type -> Type -> Type) (Arg a :: Type -> Type) Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

counit :: Arg a a0 -> a0 Source #

cut :: Arg a a0 -> Arg a (Arg a a0) Source #

cobind :: (Arg a a0 -> b) -> Arg a a0 -> Arg a b Source #

Monoid m => Comonad ((->) :: Type -> Type -> Type) ((->) m :: Type -> Type) Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

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

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

cobind :: ((m -> a) -> b) -> (m -> a) -> (m -> b) Source #

(=<=) :: Comonad s ɯ => (ɯ b `s` c) -> (ɯ a `s` b) -> ɯ a `s` c infixr 1 Source #

(=>=) :: Comonad s ɯ => (ɯ a `s` b) -> (ɯ b `s` c) -> ɯ a `s` c infixr 1 Source #

newtype Cokleisli s ɯ a b Source #

Constructors

Cokleisli 

Fields

Instances
Comonad s ɯ => Category (Cokleisli s ɯ :: k -> k -> Type) Source # 
Instance details

Defined in Control.Categorical.Monad

Methods

id :: Cokleisli s ɯ a a #

(.) :: Cokleisli s ɯ b c -> Cokleisli s ɯ a b -> Cokleisli s ɯ a c #