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

Control.Monad.Indexed.Trans.Writer

Description

The indexed writer transformer: each WriterT κ f term bears a morphism of κ atop its argument, which are composed as the WriterT terms are joined and (<*>)d.

Documentation

newtype WriterT κ f i j a Source #

Constructors

WriterT 

Fields

Instances

Instances details
(Semigroupoid κ, Monad m) => Bind (WriterT κ m :: k -> k -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

join :: forall (i :: k0) (j :: k0) (k1 :: k0) a. WriterT κ m i j (WriterT κ m j k1 a) -> WriterT κ m i k1 a Source #

(>>=) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. WriterT κ m i j a -> (a -> WriterT κ m j k1 b) -> WriterT κ m i k1 b Source #

(Semigroupoid κ, Applicative p) => Apply (WriterT κ p :: k -> k -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

(<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). WriterT κ p i j (a -> b) -> WriterT κ p j k1 a -> WriterT κ p i k1 b Source #

(*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. WriterT κ p i j a -> WriterT κ p j k1 b -> WriterT κ p i k1 b Source #

(<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. WriterT κ p i j a -> WriterT κ p j k1 b -> WriterT κ p i k1 a Source #

liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> WriterT κ p i j a -> WriterT κ p j k1 b -> WriterT κ p i k1 c Source #

(Monad m, Category κ) => Monad (WriterT κ m k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

(>>=) :: WriterT κ m k2 k2 a -> (a -> WriterT κ m k2 k2 b) -> WriterT κ m k2 k2 b #

(>>) :: WriterT κ m k2 k2 a -> WriterT κ m k2 k2 b -> WriterT κ m k2 k2 b #

return :: a -> WriterT κ m k2 k2 a #

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

Defined in Control.Monad.Indexed.Trans.Writer

Methods

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

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

(MonadFix m, Category κ) => MonadFix (WriterT κ m k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

mfix :: (a -> WriterT κ m k2 k2 a) -> WriterT κ m k2 k2 a #

(Applicative p, Category κ) => Applicative (WriterT κ p k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

pure :: a -> WriterT κ p k2 k2 a #

(<*>) :: WriterT κ p k2 k2 (a -> b) -> WriterT κ p k2 k2 a -> WriterT κ p k2 k2 b #

liftA2 :: (a -> b -> c) -> WriterT κ p k2 k2 a -> WriterT κ p k2 k2 b -> WriterT κ p k2 k2 c #

(*>) :: WriterT κ p k2 k2 a -> WriterT κ p k2 k2 b -> WriterT κ p k2 k2 b #

(<*) :: WriterT κ p k2 k2 a -> WriterT κ p k2 k2 b -> WriterT κ p k2 k2 a #

Foldable f => Foldable (WriterT κ f i j) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

fold :: Monoid m => WriterT κ f i j m -> m #

foldMap :: Monoid m => (a -> m) -> WriterT κ f i j a -> m #

foldMap' :: Monoid m => (a -> m) -> WriterT κ f i j a -> m #

foldr :: (a -> b -> b) -> b -> WriterT κ f i j a -> b #

foldr' :: (a -> b -> b) -> b -> WriterT κ f i j a -> b #

foldl :: (b -> a -> b) -> b -> WriterT κ f i j a -> b #

foldl' :: (b -> a -> b) -> b -> WriterT κ f i j a -> b #

foldr1 :: (a -> a -> a) -> WriterT κ f i j a -> a #

foldl1 :: (a -> a -> a) -> WriterT κ f i j a -> a #

toList :: WriterT κ f i j a -> [a] #

null :: WriterT κ f i j a -> Bool #

length :: WriterT κ f i j a -> Int #

elem :: Eq a => a -> WriterT κ f i j a -> Bool #

maximum :: Ord a => WriterT κ f i j a -> a #

minimum :: Ord a => WriterT κ f i j a -> a #

sum :: Num a => WriterT κ f i j a -> a #

product :: Num a => WriterT κ f i j a -> a #

Traversable f => Traversable (WriterT κ f i j) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

traverse :: Applicative f0 => (a -> f0 b) -> WriterT κ f i j a -> f0 (WriterT κ f i j b) #

sequenceA :: Applicative f0 => WriterT κ f i j (f0 a) -> f0 (WriterT κ f i j a) #

mapM :: Monad m => (a -> m b) -> WriterT κ f i j a -> m (WriterT κ f i j b) #

sequence :: Monad m => WriterT κ f i j (m a) -> m (WriterT κ f i j a) #

(Alternative p, Category κ) => Alternative (WriterT κ p k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

empty :: WriterT κ p k2 k2 a #

(<|>) :: WriterT κ p k2 k2 a -> WriterT κ p k2 k2 a -> WriterT κ p k2 k2 a #

some :: WriterT κ p k2 k2 a -> WriterT κ p k2 k2 [a] #

many :: WriterT κ p k2 k2 a -> WriterT κ p k2 k2 [a] #

(MonadPlus p, Category κ) => MonadPlus (WriterT κ p k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Writer

Methods

mzero :: WriterT κ p k2 k2 a #

mplus :: WriterT κ p k2 k2 a -> WriterT κ p k2 k2 a -> WriterT κ p k2 k2 a #

lift :: (Functor f, Category κ) => f a -> WriterT κ f k k a Source #

mapWriterT :: (f (a, κ i j) -> f' (a', κ' i' j')) -> WriterT κ f i j a -> WriterT κ' f' i' j' a' Source #

tell :: Applicative p => κ i j -> WriterT κ p i j () Source #

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

pass :: Functor f => WriterT κ f i j (a, κ i j -> κ i j) -> WriterT κ f i j a Source #

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

liftCallCC :: Category κ => CallCC f g h (a, κ k k) (b, κ i₁ j₁) (c, κ i₂ j₂) (d, κ i₃ j₃) -> CallCC (WriterT κ f i₁ j₁) (WriterT κ g i₂ j₂) (WriterT κ h i₃ j₃) a b c d Source #

liftCatch :: Catch e f g h (a, κ i₁ j₁) (b, κ i₂ j₂) (c, κ i₃ j₃) -> Catch e (WriterT κ f i₁ j₁) (WriterT κ g i₂ j₂) (WriterT κ h i₃ j₃) a b c Source #