hs-ix-0.2.0.0: Indexed applicative functors and monads
Safe HaskellNone
LanguageHaskell2010

Control.Comonad.Indexed.Trans.Cowriter

Description

The indexed cowriter transformer: each CowriterT κ f term wants within f a morphism of κ.

Documentation

newtype CowriterT κ f i j a Source #

Constructors

CowriterT 

Fields

Instances

Instances details
(Comonad ɯ, Semigroupoid κ) => Cobind (CowriterT κ ɯ :: k -> k -> Type -> Type) Source # 
Instance details

Defined in Control.Comonad.Indexed.Trans.Cowriter

Methods

cut :: forall (i :: k0) (k1 :: k0) a (j :: k0). CowriterT κ ɯ i k1 a -> CowriterT κ ɯ i j (CowriterT κ ɯ j k1 a) Source #

(<<=) :: forall (j :: k0) (k1 :: k0) a b (i :: k0). (CowriterT κ ɯ j k1 a -> b) -> CowriterT κ ɯ i k1 a -> CowriterT κ ɯ i j b Source #

Functor f => Functor (CowriterT κ f i j) Source # 
Instance details

Defined in Control.Comonad.Indexed.Trans.Cowriter

Methods

fmap :: (a -> b) -> CowriterT κ f i j a -> CowriterT κ f i j b #

(<$) :: a -> CowriterT κ f i j b -> CowriterT κ f i j a #

Applicative p => Applicative (CowriterT κ p i j) Source # 
Instance details

Defined in Control.Comonad.Indexed.Trans.Cowriter

Methods

pure :: a -> CowriterT κ p i j a #

(<*>) :: CowriterT κ p i j (a -> b) -> CowriterT κ p i j a -> CowriterT κ p i j b #

liftA2 :: (a -> b -> c) -> CowriterT κ p i j a -> CowriterT κ p i j b -> CowriterT κ p i j c #

(*>) :: CowriterT κ p i j a -> CowriterT κ p i j b -> CowriterT κ p i j b #

(<*) :: CowriterT κ p i j a -> CowriterT κ p i j b -> CowriterT κ p i j a #

(Comonad ɯ, Category κ) => Comonad (CowriterT κ ɯ k2 k2) Source # 
Instance details

Defined in Control.Comonad.Indexed.Trans.Cowriter

Methods

copure :: CowriterT κ ɯ k2 k2 a -> a #

cut :: CowriterT κ ɯ k2 k2 a -> CowriterT κ ɯ k2 k2 (CowriterT κ ɯ k2 k2 a) #

(<<=) :: (CowriterT κ ɯ k2 k2 a -> b) -> CowriterT κ ɯ k2 k2 a -> CowriterT κ ɯ k2 k2 b #

mapCowriterT :: (f (κ i j -> a) -> g (κ' u v -> b)) -> CowriterT κ f i j a -> CowriterT κ' g u v b Source #

cotell :: Comonad ɯ => κ i j -> CowriterT κ ɯ i j a -> a Source #

listen :: Functor f => CowriterT κ f i j a -> CowriterT κ f i j (a, κ i j) Source #

censor :: Functor f => (κ' u v -> κ i j) -> CowriterT κ f i j a -> CowriterT κ' f u v a Source #