indexed-transformers-0.1.0.4: Atkey indexed monad transformers
Copyright(C) 2024 Eitan Chatav
LicenseBSD 3-Clause License (see the file LICENSE)
MaintainerEitan Chatav <[email protected]>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Trans.Indexed.Writer

Description

The writer indexed monad transformer.

Documentation

newtype WriterIx (w :: k -> k1 -> Type) (i :: k) (j :: k1) (m :: Type -> Type) x Source #

Constructors

WriterIx 

Fields

Instances

Instances details
Category w => IxMonadTrans (WriterIx w :: k -> k -> (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Writer

Methods

apIx :: forall (m :: Type -> Type) (i :: k) (j :: k) x y (k1 :: k). Monad m => WriterIx w i j m (x -> y) -> WriterIx w j k1 m x -> WriterIx w i k1 m y Source #

joinIx :: forall (m :: Type -> Type) (i :: k) (j :: k) (k1 :: k) y. Monad m => WriterIx w i j m (WriterIx w j k1 m y) -> WriterIx w i k1 m y Source #

bindIx :: forall (m :: Type -> Type) x (j :: k) (k1 :: k) y (i :: k). Monad m => (x -> WriterIx w j k1 m y) -> WriterIx w i j m x -> WriterIx w i k1 m y Source #

thenIx :: forall (m :: Type -> Type) (j :: k) (k1 :: k) y (i :: k) x. Monad m => WriterIx w j k1 m y -> WriterIx w i j m x -> WriterIx w i k1 m y Source #

andThenIx :: forall (m :: Type -> Type) y (j :: k) (k1 :: k) z x (i :: k). Monad m => (y -> WriterIx w j k1 m z) -> (x -> WriterIx w i j m y) -> x -> WriterIx w i k1 m z Source #

(i ~ j, Category w) => MonadTrans (WriterIx w i j) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Writer

Methods

lift :: Monad m => m a -> WriterIx w i j m a #

(i ~ j, Applicative m, Category w) => Applicative (WriterIx w i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Writer

Methods

pure :: a -> WriterIx w i j m a #

(<*>) :: WriterIx w i j m (a -> b) -> WriterIx w i j m a -> WriterIx w i j m b #

liftA2 :: (a -> b -> c) -> WriterIx w i j m a -> WriterIx w i j m b -> WriterIx w i j m c #

(*>) :: WriterIx w i j m a -> WriterIx w i j m b -> WriterIx w i j m b #

(<*) :: WriterIx w i j m a -> WriterIx w i j m b -> WriterIx w i j m a #

Functor m => Functor (WriterIx w i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Writer

Methods

fmap :: (a -> b) -> WriterIx w i j m a -> WriterIx w i j m b #

(<$) :: a -> WriterIx w i j m b -> WriterIx w i j m a #

(i ~ j, Monad m, Category w) => Monad (WriterIx w i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Writer

Methods

(>>=) :: WriterIx w i j m a -> (a -> WriterIx w i j m b) -> WriterIx w i j m b #

(>>) :: WriterIx w i j m a -> WriterIx w i j m b -> WriterIx w i j m b #

return :: a -> WriterIx w i j m a #

evalWriterIx :: forall {k1} {k2} m (w :: k1 -> k2 -> Type) (i :: k1) (j :: k2) x. Monad m => WriterIx w i j m x -> m x Source #

execWriterIx :: forall {k1} {k2} m w (i :: k1) (j :: k2) x. Monad m => WriterIx w i j m x -> m (w i j) Source #

mapWriterIx :: forall {k1} {k2} m x w (i :: k1) (j :: k2) n y q. (m (x, w i j) -> n (y, q i j)) -> WriterIx w i j m x -> WriterIx q i j n y Source #

tellIx :: forall {k1} {k2} (m :: Type -> Type) w (i :: k1) (j :: k2). Monad m => w i j -> WriterIx w i j m () Source #

listenIx :: forall {k1} {k2} (m :: Type -> Type) w (i :: k1) (j :: k2) x. Monad m => WriterIx w i j m x -> WriterIx w i j m (x, w i j) Source #

listensIx :: forall {k1} {k2} (m :: Type -> Type) w (i :: k1) (j :: k2) y x. Monad m => (w i j -> y) -> WriterIx w i j m x -> WriterIx w i j m (x, y) Source #

passIx :: forall {k1} {k2} (m :: Type -> Type) w (i :: k1) (j :: k2) x q. Monad m => WriterIx w i j m (x, w i j -> q i j) -> WriterIx q i j m x Source #

censorIx :: forall {k1} {k2} (m :: Type -> Type) w (i :: k1) (j :: k2) x. Monad m => (w i j -> w i j) -> WriterIx w i j m x -> WriterIx w i j m x Source #