edit-0.0.1.1: Readme.md
# Edit [](https://hackage.haskell.org/package/edit)
The `Edit` monad allows you to easily bubble up whether a change was made or
not when rewriting things. Some cases where this can be handy:
1. You are making a sequence of transformations on some type and want to keep
track of whether any of them changed it or not.
2. You are rewriting a recursive type and want to bubble up information
whether something was changed or not.
A small example:
```haskell
>>> halveEvens x = if x `mod` 2 == 0 then (Dirty $ x `div` 2) else (Clean x)
>>> traverse halveEvens [1, 2, 3]
Dirty [1,1,3]
>>> traverse halveEvens [1, 3, 5]
Clean [1,3,5]
```
More thorough documentation is available on [Hackage](https://hackage.haskell.org/package/edit)
under the `Data.Edit` module. There is a tutorial too under `Data.Edit.Tutorial`.
There is also a corresponding monad transformer `EditT` available under `Control.Monad.Trans.EditT`.
# Contributing
Please open an issue on the Github issue tracker to discuss missing documentation,
API changes etc.