homepage: https://github.com/githubuser/update-monad#readme
changelog-type: markdown
hash: 4d98a6a2df7c53b309864dd0220ba34f7fc3ed76efbce59a584c784fae5bcd5b
test-bench-deps: {}
maintainer: example@example.com
synopsis: ''
changelog: ! '# Changelog for update-monad


  ## Unreleased changes

'
basic-deps:
  base: ! '>=4.7 && <5'
  mtl: -any
all-versions:
- '0.1.0.0'
author: Author name here
latest: '0.1.0.0'
description-type: markdown
description: ! '# Update Monad


  The update monad is a generalized (and pretty abstract) monad which can be specialized
  to implement any of Reader,

  Writer, or State! Check out [this paper](https://danelahman.github.io/papers/types13postproc.pdf)
  for a description.


  This repo implements both the update monad transformer (`UpdateT`) and an

  experiment called `FreeUpdateT` which forgoes the traditional requirement of

  using a monoid as the ''action'' of the update monad by substituting a free

  monoid (i.e. `[action]`). It also defers the choice of an

  `act :: action -> state -> state` function until the last second when the monad

  is run (rather than using a typeclass); this conveniently allows you to

  substitute out the `act` function for testing or alternate behaviour without

  needing to rewrite or transform the monadic values themselves. Nifty!


  Yes; I know I could implement `Update` in terms of `UpdateT Identity`; but implementing

  them separately is clearer for people learning how it works.


'
license-name: BSD3

Update from Hackage at 2018-09-05T02:03:59Z
Update from Hackage at 2018-09-05T02:03:59Z
