Copyright | (c) Andy Gill 2001 (c) Oregon Graduate Institute of Science and Technology 2001 |
---|---|

License | BSD-style (see the file LICENSE) |

Maintainer | [email protected] |

Stability | experimental |

Portability | non-portable (multi-param classes, functional dependencies) |

Safe Haskell | Safe |

Language | Haskell2010 |

The MonadWriter class.

Inspired by the paper *Functional Programming with Overloading and Higher-Order Polymorphism*, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995.

class (Monoid w, Monad m) => MonadWriter w m | m -> w where Source

writer :: (a, w) -> m a Source

`writer (a,w)`

embeds a simple writer action.

`tell w`

is an action that produces the output `w`

.

listen :: m a -> m (a, w) Source

`listen m`

is an action that executes the action `m`

and adds its output to the value of the computation.

pass :: m (a, w -> w) -> m a Source

`pass m`

is an action that executes the action `m`

, which returns a value and a function, and returns the value, applying the function to the output.

MonadWriter w m => MonadWriter w (MaybeT m) | |

Monoid w => MonadWriter w ((,) w) |
Since: mtl-2.2.2 |

MonadWriter w m => MonadWriter w (StateT s m) | |

MonadWriter w m => MonadWriter w (StateT s m) | |

MonadWriter w m => MonadWriter w (IdentityT m) | |

MonadWriter w m => MonadWriter w (ExceptT e m) | Since: mtl-2.2 |

(Error e, MonadWriter w m) => MonadWriter w (ErrorT e m) | |

(Monoid w, Monad m) => MonadWriter w (WriterT w m) | |

(Monoid w, Monad m) => MonadWriter w (WriterT w m) | |

MonadWriter w m => MonadWriter w (ReaderT r m) | |

(Monoid w, Monad m) => MonadWriter w (RWST r w s m) | |

(Monoid w, Monad m) => MonadWriter w (RWST r w s m) | |

listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) Source

`listens f m`

is an action that executes the action `m`

and adds the result of applying `f`

to the output to the value of the computation.

censor :: MonadWriter w m => (w -> w) -> m a -> m a Source

`censor f m`

is an action that executes the action `m`

and applies the function `f`

to its output, leaving the return value unchanged.

© The University of Glasgow and others

Licensed under a BSD-style license (see top of the page).

https://downloads.haskell.org/~ghc/8.6.1/docs/html/libraries/mtl-2.2.2/Control-Monad-Writer-Class.html